在ViewPager实现属性动画(包含:怎样获取手机屏的宽高)

本文介绍如何在FragmentPagerAdapter结合ViewPager的场景下,通过手指滑动为特定位置添加属性动画。首先获取屏幕宽度,然后利用ValueAnimator实现从0到屏幕一半宽度的动画效果。
功能:

 这个属性动画 是在

 Fragment做数据源 +适配器继承FragmentPagerAdapter+ViewPager 中用通过手指左右滑动给相应的位置添加动画


 思路:

第一步:获取手机屏幕的宽度

第二步:   重写 ValueAnimator(int start,int end);方法 用代码实现属性动画并设置开始和结束的位置


步骤:

第一步;获取手机屏幕的宽度

           在初始化控件的中写

          (其中 screenw是一个int类型的变量用来接收屏宽; )

           //获取屏幕的宽度和高度
          DisplayMetrics dm = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(dm);
          screenW = dm.widthPixels;(dm.heightPixels)宽度/高度

          (取屏幕二分之一的长度为标准)

          LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(screenW/2, LayoutParams.MATCH_PARENT);
          vline.setLayoutParams(params);


第二步 用代码实现属性动画并设置开始和结束的位置

            (提示:这个动画设置移动区域是手机半个屏的宽度来判定是否执行的 她的开始位置由0到1/2宽度

                        结束的位置1/2)

       

   重写 ValueAnimator(int start,int end);方法

  /**

     * 动画
     * @param start 开始位置
     * @param end 结束位置
     */
    private void valueAnimator(int start,int end) {
        ValueAnimator animator = ValueAnimator.ofInt(start,end);
        animator.setDuration(300);
        animator.start();
        animator.addUpdateListener(new AnimatorUpdateListener() {
            
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                // TODO Auto-generated method stub
                int value = (Integer) animation.getAnimatedValue();
                vline.layout(value, 0, value+vline.getWidth(), vline.getHeight());
            }
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值