Android显示GIF图片实例代码

两个Android开源项目:Android显示GIF动画,Android框架体系架构的知识 在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。 阅读详情

最近.一个朋友跟我说想,我给她弄个闹钟APP软件…功能其实很简单…只需要弄个简单的闹钟.自己设计设计时间.然后时间到了的时候,闹铃放的声音是男朋友录制好的声音…于是就开始整了….

第一次做这种的时候.我想把首页界面做成一个GIF动画特效的.这样看起来可爱点…适合妹子用,于是就有了下面这个效果图

img

上代码

ndroid中的Android.graphics.Movie 这个类,这是android提供给我们的一个非常方便的工具。 首先,重写控件View,自定义一个展示gif图的GifView Movie其实管理着GIF动画中的多个帧,只需要通过 setTime() 一下就可以让它在draw()的时候绘出相应的那帧图像。通过当前时间与duration之间的换算关系,是很容易实现GIF动起来的效果。

public class GifView extends View { 
/** 
* 默认为1秒 
*/ 
private static final int DEFAULT_MOVIE_DURATION = 1000; 
private int mMovieResourceId; 
private Movie mMovie; 
private long mMovieStart; 
private int mCurrentAnimationTime = 0; 
private float mLeft; 
private float mTop; 
private float mScale; 
private int mMeasuredMovieWidth; 
private int mMeasuredMovieHeight; 
private boolean mVisible = true; 
private volatile boolean mPaused = false; 
public GifView(Context context) { 
this(context, null); 
} 
public GifView(Context context, AttributeSet attrs) { 
this(context, attrs, R.styleable.CustomTheme_gifViewStyle); 
} 
public GifView(Context context, AttributeSet attrs, int defStyle) { 
super(context, attrs, defStyle); 
setViewAttributes(context, attrs, defStyle); 
} 
@SuppressLint("NewApi") 
private void setViewAttributes(Context context, AttributeSet attrs, 
int defStyle) { 
if (Build.VERSION.SDK_INT  = Build.VERSION_CODES.HONEYCOMB) { 
setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
} 
// 从描述文件中读出gif的值,创建出Movie实例 
final TypedArray array = context.obtainStyledAttributes(attrs, 
R.styleable.GifView, defStyle, R.style.Widget_GifView); 
mMovieResourceId = array.getResourceId(R.styleable.GifView_gif, -1); 
mPaused = array.getBoolean(R.styleable.GifView_paused, false); 
array.recycle(); 
if (mMovieResourceId != -1) { 
mMovie = Movie.decodeStream(getResources().openRawResource( 
mMovieResourceId)); 
} 
} 
/** 
* 设置gif图资源 
* 
* @param movieResId 
*/ 
public void setMovieResource(int movieResId) { 
this.mMovieResourceId = movieResId; 
mMovie = Movie.decodeStream(getResources().openRawResource( 
mMovieResourceId)); 
requestLayout(); 
} 
public void setMovie(Movie movie) { 
this.mMovie = movie; 
requestLayout(); 
} 
public Movie getMovie() { 
return mMovie; 
} 
public void setMovieTime(int time) { 
mCurrentAnimationTime = time; 
invalidate(); 
} 
/** 
* 设置暂停 
* 
* @param paused 
*/ 
public void setPaused(boolean paused) { 
this.mPaused = paused; 
if (!paused) { 
mMovieStart = android.os.SystemClock.uptimeMillis() 
- mCurrentAnimationTime; 
} 
invalidate(); 
} 
/** 
* 判断gif图是否停止了 
* 
* @return 
*/ 
public boolean isPaused() { 
return this.mPaused; 
} 
@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
if (mMovie != null) { 
int movieWidth = mMovie.width(); 
int movieHeight = mMovie.height(); 
int maximumWidth = MeasureSpec.getSize(widthMeasureSpec); 
float scaleW = (float) movieWidth / (float) maximumWidth; 
mScale = 1f / scaleW; 
mMeasuredMovieWidth = maximumWidth; 
mMeasuredMovieHeight = (int) (movieHeight * mScale); 
setMeasuredDimension(mMeasuredMovieWidth, mMeasuredMovieHeight); 
} else { 
setMeasuredDimension(getSuggestedMinimumWidth(), 
getSuggestedMinimumHeight()); 
} 
} 
@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
super.onLayout(changed, l, t, r, b); 
mLeft = (getWidth() - mMeasuredMovieWidth) / 2f; 
mTop = (getHeight() - mMeasuredMovieHeight) / 2f; 
mVisible = getVisibility() == View.VISIBLE; 
} 
@Override 
protected void onDraw(Canvas canvas) { 
if (mMovie != null) { 
if (!mPaused) { 
updateAnimationTime(); 
drawMovieFrame(canvas); 
invalidateView(); 
} else { 
drawMovieFrame(canvas); 
} 
} 
} 
@SuppressLint("NewApi") 
private void invalidateView() { 
if (mVisible) { 
if (Build.VERSION.SDK_INT  = Build.VERSION_CODES.JELLY_BEAN) { 
postInvalidateOnAnimation(); 
} else { 
invalidate(); 
} 
} 
} 
private void updateAnimationTime() { 
long now = android.os.SystemClock.uptimeMillis(); 
// 如果第一帧,记录起始时间 
if (mMovieStart == 0) { 
mMovieStart = now; 
} 
// 取出动画的时长 
int dur = mMovie.duration(); 
if (dur == 0) { 
dur = DEFAULT_MOVIE_DURATION; 
} 
// 算出需要显示第几帧 
mCurrentAnimationTime = (int) ((now - mMovieStart) % dur); 
} 
private void drawMovieFrame(Canvas canvas) { 
// 设置要显示的帧,绘制即可 
mMovie.setTime(mCurrentAnimationTime); 
canvas.save(Canvas.MATRIX_SAVE_FLAG); 
canvas.scale(mScale, mScale); 
mMovie.draw(canvas, mLeft / mScale, mTop / mScale); 
canvas.restore(); 
} 
@SuppressLint("NewApi") 
@Override 
public void onScreenStateChanged(int screenState) { 
super.onScreenStateChanged(screenState); 
mVisible = screenState == SCREEN_STATE_ON; 
invalidateView(); 
} 
@SuppressLint("NewApi") 
@Override 
protected void onVisibilityChanged(View changedView, int visibility) { 
super.onVisibilityChanged(changedView, visibility); 
mVisible = visibility == View.VISIBLE; 
invalidateView(); 
} 
@Override 
protected void onWindowVisibilityChanged(int visibility) { 
super.onWindowVisibilityChanged(visibility); 
mVisible = visibility == View.VISIBLE; 
invalidateView(); 
} 
} 

其次,在xml布局文件中,把这个view定义进去,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffffff" 
android:gravity="center" 
android:orientation="vertical" 
<com.example.alarmtest.GifView 
android:id="@+id/gif1" 
android:layout_width="300dp" 
android:layout_height="300dp" 
android:layout_gravity="center_horizontal" 
android:enabled="false"/  
<Button 
android:id="@+id/bu" 
android:text="进入" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal"/  
</LinearLayout  

最后,在MainActivity中的使用,代码如下:

public class FirstActivity extends Activity { 
private GifView gif; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_first); 
gif = (GifView) findViewById(R.id.gif1); 
// 设置背景gif图片资源 
gif.setMovieResource(R.raw.a123); 
} 
} 

Styles.xml

<declare-styleable name="GifView"  
<attr name="gif" format="reference" /  
<attr name="paused" format="boolean" /  
</declare-styleable  
<declare-styleable name="CustomTheme"  
<attr name="gifViewStyle" format="reference" /  
</declare-styleable  
<style name="Widget_GifView" </style  

raw是res下面的一个文件放的是GIF动画图噢

我这里放了一个动画图 跟一个 音乐文件,因为我要做的是一个有声音的闹铃

img

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn的支持。

更多Android进阶指南 可以扫码 解锁 《Android十大板块文档》

1.Android车载应用开发系统学习指南(附项目实战)

2.Android Framework学习指南,助力成为系统级开发高手

3.2024最新Android中高级面试题汇总+解析,告别零offer

4.企业级Android音视频开发学习路线+项目实战(附源码)

5.Android Jetpack从入门到精通,构建高质量UI界面

6.Flutter技术解析与实战,跨平台首要之选

7.Kotlin从入门到实战,全方面提升架构基础

8.高级Android插件化与组件化(含实战教程和源码)

9.Android 性能优化实战+360°全方面性能调优

10.Android零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` ) 🤔

Android Studio 显示gif动图的两种方式 Android Studio 查看gif动图的两种方法 阅读详情

相关推荐

android显示gif图

最近项目中有个需求,在android上展示gif图片,android自身是没有展示gif图的控件的

tihi的博客 1421

Android 实现GIF播放的几种方式

这4种方式都能很好地在手机上运行,但在小米盒子上出现了不同的问题。Glide本身就是很好用的图片框架,但在小米盒子上出现了运行缓慢的问题,一个3秒的GIF图片需要十几秒的时间才能跑完。没有出现运行缓慢的问题,但刷新闪烁比较严重。Movie能正常显示GIF图片,但如果想只运行一次的情况下,很难显示到最后一帧的图片。最大的问题是版本要求太高,需要Android9.0。

假装你是大灰狼的专栏 1万+

Android中动态Gif图片显示的完整指南

GIF(Graphics Interchange Format)格式由CompuServe公司在1987年推出,用于网络上图像的快速传输与展示。最初版本的GIF,即GIF87a,支持256色,并引入了透明度处理。随后,在1989年,GIF格式扩展为GIF89a,增加了控制指令,使得GIF可以制作简单的动画。GIF格式由于其良好的压缩比和动画特性,在网页设计和早期的网络通信中得到了广泛的应用。尽管Glide库默认设置已经足够使用,但在某些特定情况下,我们可能需要自定义加载选项和参数。

weixin_42602726的博客 1382

Android 上展示 GIF 动图的方法

使用ImageView加载 WebP 格式优点:简单直接,节省存储空间。缺点:需要将 GIF 转换为 WebP,且 WebP 支持有限。使用Glide优点:强大的图片加载和缓存功能,支持复杂的图像处理。缺点:库较大,增加 APK 大小。使用Fresco优点:支持多种图片格式,高效的内存和磁盘缓存管理。缺点:库较大,学习曲线较陡。使用优点:专用于 GIF,功能丰富,内存使用优化较好。缺点:仅限于 GIF,不支持其他格式。使用Movie类优点:不需要额外的第三方库,轻量级。缺点。

iblade的博客 6039

Android 显示GIF图片实例详解

Android 显示GIF图片实例详解 gif图动画在Android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个。经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示代码,我下载过几个,但是都不是很理想,不是我完全想要的。所以有时候就得自己学会总结,把开源的东西整理成自己的,现在无聊,也正好有朋友需要,所以现在整理了一下,留着以后备用! 废话不多说,直接上图: 在这里主要用的是:android中的android.graphics.Movie 这个类,这是android提供给我们的一个非常方便的工具。 首先,重写控件

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

android显示动态图片不显示,Android显示GIF图片实例代码

最近.一个朋友跟我说想,我给她弄个闹钟APP软件...功能其实很简单...只需要弄个简单的闹钟.自己设计设计时间.然后时间到了的时候,闹铃放的声音是男朋友录制好的声音...于是就开始整了....第一次做这种的时候.我想把首页界面做成一个GIF动画特效的.这样看起来可爱点...适合妹子用,于是就有了下面这个效果图上代码ndroid中的Android.graphics.Movie 这个类,这是andr...

weixin_39886238的博客 258

UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。

MarcoPro的博客 1637

xUtils3的显示图片简介

xUtils3显示图片简介

u014620028的专栏 1万+

MediaPipe实战:从零构建人脸关键点检测应用

本文详细介绍了如何使用Google的MediaPipe框架从零构建一个实时人脸关键点检测应用。文章深入剖析了MediaPipe的三段式检测流水线,提供了Android平台的完整实战教程,包括环境配置、模型加载、摄像头集成、关键点绘制以及性能调优指南,帮助开发者快速实现高效、跨平台的人脸AR特效与交互功能。

weixin_29100927的博客 345

基于KiCad的STM32最小系统设计实战案例(含PCB布线)

手把手带你用KiCad完成STM32最小系统设计,涵盖原理图绘制、封装匹配、规则约束设置及关键信号PCB布线技巧;全程基于开源EDA工具KiCad,强调实操细节与常见坑点规避。

weixin_42452483的博客 361

SSH自带SFTP不够用?四款主流客户端对比与选型指南

SFTP作为SSH的子系统,是远程文件传输的标准协议之一,因其复用SSH的加密通道而广受欢迎。但纯命令行SFTP在多会话管理、可视化目录树、断点续传等方面存在明显短板,尤其当面对多服务器频繁操作时,效率瓶颈更为突出。理解SFTP的工作原理与技术边界,是选择合适工具的前提。在工程实践中,Xterminal、Termius、MobaXterm、WinSCP等图形化客户端各自强调不同的能力:有的侧重一体化终端与文件管理,有的强调整平台同步与密钥管理,还有的专注文件传输的稳定与自动化。无论你是后端工程师、DevOp

weixin_34258838的博客 505

KEPServerEX物联网网关(IoT Gateway)REST客户端代理(非原创)

(中文版)资料来源于【OPC-KEPServerEX学习KEPWare交流】905485143群的【455196383】【零下一度】 一。KEPServerEX物联网网关REST客户端代理演示 在KSE中,首先构建一个带有通道/设备/标签的模拟器系统。 例如,下面是三个随机项目。 直接到IoT网关插件,添加新代理。 从类型列表中选择REST Client。 终结点...

-雲飛兄-博客 5809

【Android Demo】加载.gif格式图片

Android系统为了节省内存,一般不支持直接显示gif图片,即使你强制设置了,也只会显示图片的第一帧。 这个 Demo 是在网上看到的,是个思路,还是有些局限性,还是记录下,以后研究吧。 1.效果图: 2.实现原理: 通过解码gif图片形成多张静态图,然后通过线程和imageView来实现循环播放   3.准备GIF图片   4.详细代码 &lt;1&gt;工具类:Comm...

weixin_34115824的博客 156

Python GUI编程:视频播放器(opencv、tkinter、PIL、ffpyplayer、threading)

用了几天做了一个视频播放器,搞了几个版本,开始想的是运用cv2模块把视频转化成一张张图片,然后再用ffpyplayer模块下的相关类来播放视频。但是,结果画面和视频的音频播放不同步(原因是cv2将转换得到的图片展示到tk上canvas,花费的时间多于每张图片应该展示的时间[1/fps])。后面看到ffpyplayer这个模块官网的介绍,发现这个模块可以得到视频播放时的图片,只不过这个图片是一个对象,我对这个不是很了解,到网上找了很久,终于找到了一篇文章,说可以利用PIL模块下的相关类,把上述这个对象转化成。

坚持不懈的大白的博客 3408

微信文件自动归档!手把手教你用OpenClaw搭个自己的“数字员工”,告别重复劳动

很多人说“AI是未来”,但未来不是靠喊口号的。OpenClaw的真正价值,是让你把重复劳动交出去,把时间留给真正需要创造力的事。这事真能干,而且不难。下载OpenClaw(GitHub仓库按我写的步骤跑一遍遇到坑,评论区留言——我亲自帮你看作者后记:上周五,我让AI自动归档了文件后,终于在5点准时下班。回家路上,我给它发了条消息:“干得漂亮”。它没回,但我知道——它在默默等我的下一条指令。

2601_94871597的博客 415

常见的Android开源代码以及框架

Android SDK源代码 http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/ 开源代码 http://www.open-open.com/lib/view/open1404286864296.htmlhttp://www.apkbus.com/android...

weixin_30568591的博客 89

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SurfaceView

使用SurfaceView 只要继承SurfaceView类并实现SurfaceHolder.Callback接口就可以实现一个自定义的SurfaceView了,SurfaceHolder.Callback在底层的Surface状态发生变化的时候通知View,SurfaceHolder.Callback具有如下的接口:  surfaceCreated(SurfaceHolder holder)

hyz4287010的专栏 553

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android 动画框架详解

Android 动画使用示例        使用动画示例程序的效果是点击按钮,TextView 旋转一周。读者也可以参看 Apidemos 中包 com.example.android.apis.animationview 下面的 Transition3d 和 com.example.android.apis.view 下面的 Animation1/Animation2/Animation3 示

qjbagu的专栏 559

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android显示GIF图片

今天我们研究一下如何在Android手机上显示GIF动态图片。 首先需要在src目录下新建一个自定义的View,代码如下: import android.content.Context; import android.graphics.Canvas; import android.graphics.Movie; import android.util.AttributeSet; import

bear_huangzhen的专栏 2468

android加载网络gif图片不显示不出来的,android显示网络gif图片

这功能源自负责app中要加一个显示gif广告图功能。android自带控件不支持gif图片,网上很多通过扩展ImageView或View来实现支持gif图片,但在android4.0后,需要关闭硬件加速功能才能使用,而且也容易出现内存溢出问题。网上找了两个开源包来实现显示Gif图android-gif-drawable 支持gif显示的view控件(如果访问不了,可以此这里下载)用jni实现的,编...

weixin_35718671的博客 919

Android显示Gif图片

关于android显示gif图片的方法有许多种。我试了许多方法之后,觉得都不是很理想。庆幸的是,查看了这篇博客加载网络gif图片之后,我总算找到了理想的方法,在此博客的基础上,本博客将讲解得更详细,更具体。本博客讲解的《Android从网络上获取Gif图片并显示》所用的技术为:利用android开源库android-gif-drawable和android-async-http显示本地的gif图片和

岗子博的Android开发之旅 1671

Android中Gif图片的显示

Android中Gif图片的显示

mmqqyyqqyyq的博客 586

android webview 显示gif图片,android 显示gif图片实例详解

在android中不支持gif格式的图片,但是由于我希望在我的程序中刚刚加载的时候有一个小人在跑步表示正在加载。而这个小人跑就是一个gif图片。也就是希望程序一启动时就加载gif图片。在网上查找了一些方法不知道是我使用的android的版本高(android4.4)还是什么问题就是加载不出来。最后想了一个办法加载了出来。这个办法就是将gif放在webView中让其显示。下面是关于这个的代码:act...

weixin_28973627的博客 643
上一篇: 阿里内部泄露!最新Android中高级面试题+答案解析大公开,速看!错过可惜!
下一篇: PopupWindow+RecyclerView实现上下滑动框功能
不秃头de程序猿
博客等级 码龄5年 4090粉丝 1478原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值