首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 逐帧动画( Drawable 动画),这一篇就够了

    前言 作为 Android 最常见的两种动画形式,逐帧动画( Drawable 动画),有着极其广泛的应用,它的原理与早起的电影以及 GIF 类似,就是把一张的图,按顺序快速切换,这样一来看上去就好像会动一样...这时如果我们采用,将动画封装在一个资源文件中,在需要使用的时候能够像添加背景图一样简单的添加它: 步骤 在 /res/drawable 文件夹下建立一个名为 abunation_list.xml 的文件..._1.getDrawable(); animationDrawable.start(); ---- 注意事项 在使用帧动画时,这里有几个要点需要大家记住: 其一、在我的范例代码中,大家可以看到...正确的使用方法,根据活动的运行周期,我们应该在 onResume 方法中添加它,这样就保证了所有的控件都被实例化出来, 其二、对与帧动画,我们不建议添加太大的图片,因为这很容易导致 OOM,建议大家用...Drawable 动画,去做一些类似,加载动画,WiFi 链接动画这样,占有内存比较小的操作。

    3.4K20

    Android实战经验分享之简单5步快速实现轮播图

    ViewFlipper的基本用法 在布局文件中添加ViewFlipper: 在XML布局文件中声明ViewFlipper,并添加需要轮播的子视图 。..."match_parent" android:src="@drawable/image2" /> 设置动画效果: ViewFlipper允许开发者自定义视图切换时的入场和出场动画...imageView.setImageResource(R.drawable.image3); viewFlipper.addView(imageView); ViewFlipper的高级用法 手势滑动...适配器使用: 对于更复杂的数据集,可以使用AdapterViewFlipper,它类似于ViewPager,但支持动画效果 。...ViewFlipper的性能优化 按需加载: 只在需要时加载视图,避免一次性加载所有视图,减少内存占用 。 动画优化: 确保动画不过于复杂,以免影响性能 。

    10310

    实例演示Android异步加载图片

    本文给大家演示异步加载图片的分析过程。让大家了解异步加载图片的好处,以及如何更新UI。...}); 62 } 63 } 2)Handler+Thread+Message模式 这种模式使用了线程,所以可以看到异步加载的效果。...当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。 下面的演示例子是创建一个可重用固定线程数的线程池。...4)Handler+ExecutorService(线程池)+MessageQueue+缓存模式 下面比起前一个做了几个改造: 把整个代码封装在一个类中,同时为了避免出现同时多次下载同一幅图的问题,使用了本地缓存封装的类...这里使用SoftReference 是为了解决内存不足的错误(OutOfMemoryError)的。

    1.4K50

    Android如何显示gif动图:AnimatedImageDrawable

    前言 我们知道,Android的基础组件ImageView本身是不支持gif动图的,所以很长一段时间内,开发者们都是通过三方库或自定义组件来实现gif显示,而且大部分的图片加载框架都支持gif,比如Glide...如何使用。...显示 我们知道,直接在ImageView中加载gif图是可以显示的,但是图不会动。...但是这时候ImageView中的Drawable实际上是AnimatedImageDrawable类型的,所以我们获取这个Drawable进行操作即可,代码如下: if (Build.VERSION.SDK_INT...() } } } 我们通过两个按钮来分别实现停止和开始,结果如下: 通过运行结果可以看到,当我们停止后再开始,gif动画会从头播放,而不是从停止的地方继续播放。

    5.2K10

    Android开发之引导页的简单实现

    一、实现的思路 当欢迎页面加载完成的时候(一般为动画),即欢迎页面动画加载完成的时候,从本地存储中取出记录是否是第一次进入,然后进入引导页或者主页,如果是第一次就进入引导页,否则进入主页。...引导页布局使用:viewPager实现,可根据需要添加“开始体验”,“跳过”按钮等,布局中下位置可使用imgae设置其drawable的shape为oval,作为引导页面的指示器点,根据页面的多少实现动态添加.../** * 两点间的间距 */ private int leftMarg; private int widthDpi; /** * 设置适配器--.../把图片添加到集合中 imageViews.add(imageView); //添加灰色的点 ImageView point =...new ImageView(this); point.setImageResource(R.drawable.point_gray); //设置点的大小

    2.4K21

    {Android}一行代码起飞,Glide加载gif优化实践

    前言 最近项目中有使用到gif动画,加上本身已经引入了Glide 3.7.0(支持gif)库,所以便用Glide来加载了;但在使用过程中还是遇到了不少困难, 在此记录下,希望可以给遇到类似问题的你一些思考和建议...//不使用它的默认动画 Glide.with(mContext) .load(url) .dontAnimate() .placeholder(R.drawable.loading_spinner...) .into(circleImageview); 提示:不要再非主线程里面使用Glide加载图片,如果真的使用了,请把context参数换成getApplicationContext 3.加载GIF...).into(mIv); 如果希望加载gif时只加载gif的第一帧,把gif当作普通图片一样加载,那么只需要加上asBitmap方法即可 Glide.with(this).load(mGifUrl).asBitmap...diskCacheStrategy(DiskCacheStrategy.SOURCE)时,Gif的加载速度会显着提高(其实就是把gif资源缓存到磁盘)->可以解决gif加载慢或加载不出来的情况(NONE

    10.7K30

    Carson带你学Android:手把手教你优雅实现首页-底部Tab导航(菜单栏)

    前言 Android开发中使用底部菜单栏的频次非常高,主要的实现手段有以下: TabWidget 隐藏TabWidget,使用RadioGroup和RadioButton FragmentTabHost...5.0以后的TabLayout 最近推出的 Bottom navigation 今天带大家来探索下如何用Fragment+FragmentTabHost++ViewPager实现底部菜单栏 目录 总体设计思路...2.ViewPager类需要PagerAdapter适配器类提供数据,与ListView类似 3.Google官方建议ViewPager配合Fragment使用 具体使用请参考我写的另外一篇文章:Android...运行时被添加或删除 3.Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。...作用 主要是为了支持更动态、更灵活的界面设计(从3.0开始引入) 具体使用请参考我写的另外一篇文章Android开发:Fragment介绍&使用方法解析 实现步骤 在主xml布局里面定义一个FragmentTabHost

    92230

    Android开发笔记(一百七十四)图像解码器ImageDecoder

    早期的Android只支持三种图像格式,分别是JPEG、PNG和GIF,虽然这三类图片都能在ImageView上显示,但对于GIF格式来说,图像视图仅能显示动图的初始画面,无法直接播放动画效果。...和GIF不支持有损压缩,因此它们的图片体积较大) 正因为WebP与HEIF如此优秀,所以它们在手机上愈加流行,从Android9开始便支持浏览这两种格式的图片,从Android10开始更允许将拍摄的照片保存为...利用图像解码器加载并显示图片的步骤分为以下三步: 1、调用ImageDecoder的createSource方法,从指定地方获得数据源; 2、调用ImageDecoder的decodeDrawable...方法,从数据源解码得到Drawable类型的图形信息; 3、调用图像视图的setImageDrawable,设置图像视图的图形对象; 其中第一步的createSource方法允许从多处来源读取图像信息...,包括但不限于: 1、来自存储卡的File对象; 2、来自系统相册的Uri对象; 3、来自资源图片的图形编号; 4、从输入流获取的字节数组; 举个例子,现在准备通过ImageDecoder加载相册中的某张图片

    1.7K10

    Android开发笔记(十七)GIF动画的实现GifAnimation

    但在手机上由于系统资源紧张,所以Android并没有直接支持GIF格式,如果在ImageView中放入一张gif文件,你会发现显示出来的只是该gif文件的第一帧图片。...对于这种情况,Android带来了帧动画技术,通过连续播放每帧图片,从而实现帧动画的效果。不过若要使用帧动画,我们得自己准备好若干帧,然后把这些图片帧编入图片队列,这样才可以显示动画。...对于如何从gif文件中提取出每帧图片,博主在之前的文章中有做了说明,详见《Android开发笔记(十)常用的图片加工操作》。 可是手工分解gif文件也太麻烦了,如果gif数量多的话,岂不累坏了。...不知不觉,我们已经应用了十几个Drawable中的大半,它们分别是: 1、StateListDrawable:详见《Android开发笔记(七)初识Drawable》 2、ShapeDrawable...点击下载本文用到的GIF动画和帧动画的工程代码 点此查看Android开发笔记的完整目录

    1.2K60

    实例演示Android异步加载图片

    本文给大家演示异步加载图片的分析过程。让大家了解异步加载图片的好处,以及如何更新UI。...}); 62 } 63 } 2)Handler+Thread+Message模式 这种模式使用了线程,所以可以看到异步加载的效果。...当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。 下面的演示例子是创建一个可重用固定线程数的线程池。...4)Handler+ExecutorService(线程池)+MessageQueue+缓存模式 下面比起前一个做了几个改造: 把整个代码封装在一个类中,同时为了避免出现同时多次下载同一幅图的问题,使用了本地缓存封装的类...这里使用SoftReference 是为了解决内存不足的错误(OutOfMemoryError)的。

    1.4K80

    Google推荐的图片加载库Glide:最新版使用指南(含新特性)

    的图片加载和缓存库,它主要专注于大量图片的流畅加载,Glide几乎可以胜任任何你需要使用到图片从网络拉取,压缩,显示的场景。...GlideType 以添加对GIF格式的支持为例,只是举例,实际上API中已经支持了。 在刚才的CustomGlideExtension类中加上: ?...TransitionOptions TransitionOptions决定图片加载完成如何从占位符图片(或者之前的图片)过渡。 淡入 交叉淡入 不过渡 ?...注意 TransitionOptions是和你要加载的资源的类型绑定的,也就是说,如果你请求一张位图(Bitmap),你就需要使用BitmapTransitionOptions,而不是DrawableTransitionOptions...那么如何在运行修改ImageView尺寸呢?

    3.1K30

    android图片加载库Glide

    Glide是一个非常成熟的图片加载库,他可以从多个源加载图片,如:网路,本地,Uri等,更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一个低的内存消耗。 Glide怎么使用?...默认的Bitmap格式是RGB_565 一下是Picasso和Glide加载后的结果(1920x1080 像素的图片被加载到768x432像素的imageview中): ?...,只要imageview的尺寸不一样,那么Glide就会重新加载一次,这时候,它会在加载的imageview之前从网络上重新下载,然后再缓存。...gif的缓存和一般的图片也是一样的,也是第一次加载的时候调整大小,然后缓存。 但是,要注意的是,通过测量,我们可以发现gif图片将消耗非常多的内存,因此使用它的时候要慎重。...除了加载gif图片外,Glide还可以解析任何的video文件成为一个静态图片。 另一个比较有用的特性是,你可以配置显示图片的动画,而Picasso只支持一个淡入(fading in)动画效果。

    1.9K60
    领券