Android :为你的启动页面SplashActivity 添加动画的几种方法

来源:互联网 发布:时尚的网络用语 编辑:程序博客网 时间:2024/06/04 23:36


  启动页一般都会放一张默认的图片,有登陆的时候,登录成功进入主界面,不需要登录的时候,一般2-3s进入主页面,在等待的期间为了平滑的过度可以加入动画,体验会更好一点。

关于动画,必看的博客:

Android属性动画完全解析(上),初识属性动画的基本用法

总共三篇,细细的读一遍,做一遍,属性动画就算入门了。

下图就展示了启动页SplashActivity 动画Gif展示:



1,Drawable 动画测试

假设这张图片是放在drawable目录下的,

  ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView,"alpha",0.6f,1.0f);
imageView.setImageResource(R.drawable.ic_splash);                    //动画时长  objectAnimator.setDuration(2500);  objectAnimator.start();

这样一张图片的不透明度从0.6-1.0,就像上图展示的,但是这种方式不够好,每次都是硬塞进去一个Drawable,我们可以通过缓存框架加载。

2,Drawable GLIDE 加载测试

添加依赖:
  compile 'com.github.bumptech.glide:glide:3.7.0'
注册网络权限:
 <uses-permission android:name="android.permission.INTERNET"/>
Glide.with(this).load(R.drawable.ic_splash).diskCacheStrategy(DiskCacheStrategy.ALL).crossFade(2500).into(imageView);

这样的效果和上面一样,但是!动画只会加载一次,因为缓存的原因,解决方案有两个:
(1),不缓存
 Glide.with(this).load(R.drawable.ic_splash).skipMemoryCache(true).crossFade(2500).into(imageView);
(2),不用Glide 加载动画

 Glide.with(this).load(R.drawable.ic_splash).diskCacheStrategy(DiskCacheStrategy.ALL). into(imageView); objectAnimator.setDuration(2500); objectAnimator.start();

这里推荐第二个方案,每次都不缓存,没啥意义。

3,本地图片动画测试

 上面都是加载Drawable 图片,但是实际场景还有加载本地图片,比如提前把广告图下载到本地,这个时候上面的方法就不行了。
增加访问权限:
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
申请权限:
 /**         * 6.0 以上申请权限         */       if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED)        {            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},0);        }
申请权限可参考 Android 6.0 权限机制详解

代码:
//这是我本地的一张图片 imagePath = Environment.getExternalStorageDirectory()+"/ic_splash.png";
 imageView.setImageBitmap(BitmapFactory.decodeFile(imagePath)); objectAnimator.setDuration(2500); objectAnimator.start();

但是这种方案不推荐使用

4,本地图片GLIDE动画测试

   使用Glide加载:
  
Glide.with(this).load(imagePath).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);  objectAnimator.setDuration(2500);  objectAnimator.start();

这种方式最常用。

阅读全文
0 0
原创粉丝点击