Andoird ValueAnimator 实现动画
来源:互联网 发布:如何破解无壳网络验证 编辑:程序博客网 时间:2024/05/22 07:03
一直觉得新浪微博的那个动画还不错
自定义一个View,就是下面的红十字——RotateButton,这个很简单啦
重写View的onDraw()方法
@Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas);/*float x=5;float y=5;*/ int x=getWidth(); int y=getHeight(); paint.setAntiAlias(true); paint.setColor(Color.RED); paint.setStrokeWidth(5); canvas.drawLine(0, y/2, x, y/2, paint); canvas.drawLine(x/2, 0, x/2, y, paint);
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.layout_main_fragment, null); bt=(RotateButton) view.findViewById(R.id.rotate_bt); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Log.e("sjj", "onclick"); //getActivity().getFragmentManager().beginTransaction().replace(R.id.main_content, new SecondFragment()).commit(); Intent it=new Intent(getActivity(),SecondActivity.class); startActivity(it); } }); return view; }
第二个Fragment和第一个布局上很相似,两个红十字是重合的,但是第二个Fragment的红十字有个旋转的动画效果,所以视觉上是第一个Fragment的红十字直接旋转了,其实是两个Fragment
public class SecondFragment extends Fragment { RotateButton rb; boolean firstClick=true; RelativeLayout rl3,rl2; ImageButton bt1; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.layout_second_fragment, null); rb=(RotateButton) view.findViewById(R.id.rotate_bt); rl3=(RelativeLayout) view.findViewById(R.id.relativeLayout3); rl2=(RelativeLayout) view.findViewById(R.id.relativeLayout2); rotate(45); showButton(); rb.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub getActivity().finish();/*if(firstClick){rotate(45);}else{}firstClick=!firstClick;*/ } }); return view; } void rotate(int degree) { ValueAnimator va=ValueAnimator.ofFloat(0.1f,1f).setDuration(500); va.start(); final int mDegree; mDegree=degree; va.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator arg0) { // TODO Auto-generated method stub arg0.setTarget(rb); float val=(Float) arg0.getAnimatedValue(); rb.setRotation(mDegree*val); } }); } void showButton() { ValueAnimator va=ValueAnimator.ofFloat(1f,0).setDuration(500); va.start(); va.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator arg0) { // TODO Auto-generated method stub arg0.setTarget(rl2); float val=(Float) arg0.getAnimatedValue(); Log.e("sjj", "val"+val); //rb.setRotation(mDegree*val); rl2.setTranslationY(val*1000); rl3.setTranslationY(val*1000); //rl2.setRotationX(val*360); } }); }}
有两个动画,一个是红十字旋转45度,同时后面的4个Button从下移动到中间
ValueAnimator va=ValueAnimator.ofFloat(0.1f,1f).setDuration(500);
这段代码的意思是设置时间500毫秒,值从0.1变为100,然后要添加监听器AnimatorUpdateListener()
float val=(Float) arg0.getAnimatedValue();这个val的值是什么呢? 比如(1-0.1)/500=a这是单位时间的值,a*经过的时间=val,就是此时的值
rb.setRotation(mDegree*val);设置红十字旋转的度数,当然因为val在不断变化,度数也在变化,实现动画
0 0
- Andoird ValueAnimator 实现动画
- ValueAnimator实现动画【抛物线】
- ValueAnimator实现动画
- 简单的计时器动画实现-ValueAnimator
- PropertyAnimation属性动画 ValueAnimator实现自由落体 抛物线
- Android十个小案例动画,自定义View动画实现,ValueAnimator
- Andoird旋转动画
- 自定义View和属性动画ValueAnimator实现圆点指示器
- 使用ValueAnimator设置动画
- android 属性动画(ValueAnimator)
- ValueAnimator构造好玩动画
- 属性动画之ValueAnimator
- Android 动画 ValueAnimator(一)
- Android 动画 ValueAnimator(二)
- Android 动画 ValueAnimator(三)
- Android 动画 ValueAnimator(四)
- 属性动画之ValueAnimator
- Android动画----ValueAnimator
- HDU 1005 Number Sequence
- Lisp学习4
- scanf,priintf。注意%格式使用!
- Qt_4_8版本的安装步骤、环境配置以及软件下载地址
- Zend Studio 12破解
- Andoird ValueAnimator 实现动画
- 7-3
- sizeof() operator demo
- Eclipse CDT "for loop initial declaration used outside C99 mode" 解决办法
- 智力题
- Java环境搭建若干问题
- Objective-C基础——字典
- stl源码剖析 详细学习笔记heap
- 面试题积累(五)