启动页一般都会放一张默认的图片,有登陆的时候,登录成功进入主界面,不需要登录的时候,一般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();
这种方式最常用。