效果图

实现逻辑

  1. 背景放一张图片
  2. 图片上面添加你所需要的信息
  3. 将图片的长宽拉伸,不过是在一定时间内.均匀的拉伸

用到知识点

  • Android属性动画 ObjectAnimator
  • AnimatorSet

ObjectAnimator

ObjectAnimator.ofFloat(Object target, String propertyName,String ... values);

通过ObjectAnimator的静态工厂方法,创建一个ObjectAnimator对象
其中共有三个参数

  1. 需要操纵的View对象
  2. 要操纵的属性,包含多个,下面会说!
  3. 可变数组参数,传入多个属性,意思是从第一个渐变到最后一个属性
//这句话的意思就是传入一个ImageView对象,围绕X进行2D缩放,由原始的大小方法到原来的1.13倍!ObjectAnimator animatorX = ObjectAnimator.ofFloat(mSplashImage, "scaleX", 1f, 1.13f);

关于ObjectAnimator.ofFloat();第二个参数

  • translationX和translationY: 这两个属性作为一种增量来控制着view对象从它布局容器的左上角坐标开始的位置
  • rotation . rotationX 和 rotationY : 这三个属性控制view对象围绕只带你进行2D和3D旋转
  • scaleX和scaleY: 这两个属性控制view对象围绕它的支点进行2D缩放
  • pirotX 和 PirotY :这两个属性控制View对象的支点位置,围绕支点进行旋转和缩放变换处理.默认支点位置就是中心位置
  • X 和Y :这是两个使用的属性,它描述了View在他的容器中最终的位置,它是最初的左上角坐标和translationX,translationY值的累计和/
  • alpha VIew 对象的透明度.默认是1(不透明),0(不看见)

其中还用到了AnimatorSet 动画集合.

作用就是将多个动画通过 playTogether(),playSequentially(),animSet.play().with(),defore(),after()这些方法来控制多个动画的协同工作方式,从而做到对动画播放顺序的精确控制

        AnimatorSet set = new AnimatorSet();        set.setDuration(ANIMATION_DURATION).play(animatorX).with(animatorY);        set.start();

代码实现

public class EntryActivity extends Activity {    private static final int ANIMATION_DURATION = 2000;    private static final float SCALE_END = 1.13F;    private static final int[] SPLASH_ARRAY = {            R.drawable.splash0,            R.drawable.splash1,            R.drawable.splash2,            R.drawable.splash3,            R.drawable.splash4,            R.drawable.splash5,            R.drawable.splash6,            R.drawable.splash7,            R.drawable.splash8,            R.drawable.splash9,            R.drawable.splash10,            R.drawable.splash11,            R.drawable.splash12,            R.drawable.splash13,            R.drawable.splash14,            R.drawable.splash15,            R.drawable.splash16,    };    private ImageView mSplashImage;    private TextView titleView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_entry);        mSplashImage = ButterKnife.findById(this, R.id.iv_entry);        titleView = ButterKnife.findById(this, R.id.tv_title);        Random r = new Random(SystemClock.elapsedRealtime());        //设置随机的图片        mSplashImage.setImageResource(SPLASH_ARRAY[r.nextInt(SPLASH_ARRAY.length)]);        animateImage();    }    private void animateImage() {        //表示从1f --> 1.13f 的变化过程        ObjectAnimator animatorX = ObjectAnimator.ofFloat(mSplashImage, "scaleX", 1f, SCALE_END);        ObjectAnimator animatorY = ObjectAnimator.ofFloat(mSplashImage, "scaleY", 1f, SCALE_END);        //表示多个动画的协同工作        AnimatorSet set = new AnimatorSet();        set.setDuration(ANIMATION_DURATION).play(animatorX).with(animatorY);        set.start();        //对动画的监听,动画结束后立马跳转到主页面上        set.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                MainActivity.start(EntryActivity.this);                EntryActivity.this.finish();            }        });    }}

更多相关文章

  1. Android动画学习笔记-Android(安卓)Animation
  2. TextView属性总结
  3. Android开发学习:ImageView的scaletype属性
  4. Suggestion: add 'tools:replace="android:label"'
  5. android开发 drawable中XML
  6. Android(安卓)中文 API (19) —— TwoLineListItem
  7. Android的webView应用与js互调app混合开发用例
  8. 【android】解决设置ImageView的scaletype为centerCrop后padding
  9. WebKit – WebKit For Android

随机推荐

  1. 芋道 Spring Boot 自动配置原理
  2. 芋道 Spring Boot 热部署入门
  3. 芋道 Spring Boot MyBatis 入门
  4. 芋道 Spring Boot 消除冗余代码 Lombok
  5. 芋道 Spring Boot 数据库连接池入门
  6. Caused by: java.lang.IllegalStateExcep
  7. RocketMQ 源码解析 —— 调试环境搭建
  8. 芋道 Spring Boot Elasticsearch 入门
  9. 我的PMP学习感悟
  10. 芋道 Spring Boot 分库分表入门