android 动画之---位移抛物线
来源:互联网 发布:剑倚天下魔刃进阶数据 编辑:程序博客网 时间:2024/05/22 15:46
今天给大家说说android里面的动画,如何实现抛物线移动
2、ScaleAnimation 缩放动画
3、TranslateAnimation 位移动画
4、RotateAnimation 旋转动画
TranslateAnimation是移动的动画效果。它有三个构造函数,分别是:
1.public TranslateAnimation(Context context,AttributeSet attrs)
2.public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
这个是我们最常用的一个构造方法,
float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;
float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;
float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;
float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;
如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点(x+toXDelta,y+toYDelta)点.
3.public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
fromXType:第一个参数是x轴方向的值的参照(Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF,or Animation.RELATIVE_TO_PARENT);
fromXValue:第二个参数是第一个参数类型的起始值;
toXType,toXValue:第三个参数与第四个参数是x轴方向的终点参照与对应值;
后面四个参数就不用解释了。如果全部选择Animation.ABSOLUTE,其实就是第二个构造函数。
int[] startLocation = new int[2];// 一个整型数组,用来存储按钮的在屏幕的X、Y坐标 av.getLocationInWindow(startLocation);// 这是获取A的在屏幕的X、Y坐标(这也是动画开始的坐标)
int[] endLocation = new int[2];// 一个整型数组,用来存储按钮的在屏幕的X、Y坐标 bv.getLocationInWindow(startLocation);// 这是获取B的在屏幕的X、Y坐标(这也是动画结束的坐标)
ImageView ball = new ImageView(mContext);// ball动画的图片,我的是一个小球 ball.setImageResource(R.mipmap.icon_fansnum_like_on);// 设置ballImg的图片
setAnim(ball);
public void setAnim(final View v) { anim_mask_layout = null; anim_mask_layout = createAnimLayout(); anim_mask_layout.addView(v);//把动画小球添加到动画层 // 计算位移 int endX = 0 - startLocation[0] + 20;// 动画位移的X坐标 int endY = endLocation[1] - startLocation[1];// 动画位移的y坐标 System.out.println("=====x==="+endX); System.out.println("=====y==="+endY); TranslateAnimation translateAnimationX = new TranslateAnimation(0, endX, 0, 0); translateAnimationX.setInterpolator(new LinearInterpolator()); //让动画已均匀的速度改变 translateAnimationX.setRepeatCount(0);// 动画重复执行的次数 translateAnimationX.setFillAfter(true); //执行完毕,利用视图setLayoutParams来重新定位 TranslateAnimation translateAnimationY = new TranslateAnimation(0, 0, 0, endY); translateAnimationY.setInterpolator(new AccelerateInterpolator()); translateAnimationY.setRepeatCount(0);// 动画重复执行的次数 translateAnimationX.setFillAfter(true); AnimationSet set = new AnimationSet(false); set.setFillAfter(false); set.addAnimation(translateAnimationY); set.addAnimation(translateAnimationX); set.setDuration(800);// 动画的执行时间 view.startAnimation(set); // 动画监听事件 set.setAnimationListener(new Animation.AnimationListener() { // 动画的开始 @Override public void onAnimationStart(Animation animation) { v.setVisibility(View.VISIBLE); } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } // 动画的结束 @Override public void onAnimationEnd(Animation animation) { v.setVisibility(View.GONE); addCart(); } });}哎 anim_mask_layout是什么,问的话,他就是小球需要滚动的那个动画层
/** * 创建动画层 * @return */private ViewGroup createAnimLayout() {//这里大家应该都能看懂了,我就不过多的写注释了 ViewGroup rootView = (ViewGroup) getActivity().getWindow().getDecorView(); LinearLayout animLayout = new LinearLayout(getActivity()); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); animLayout.setLayoutParams(lp); animLayout.setId(Integer.MAX_VALUE - 1); animLayout.setBackgroundResource(android.R.color.transparent); rootView.addView(animLayout); return animLayout;}private View addViewToAnimLayout(final ViewGroup parent, final View view, int[] location) {//定义小球在动画层的位置,A坐标的位置,及距离左边的距离为X轴坐标,距离高的距离为Y轴坐标 int x = location[0]; int y = location[1]; LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.leftMargin = x; lp.topMargin = y; view.setLayoutParams(lp); return view;}这就是一个简单的位移动画,其实没有大家想的那么难,主要是需要熟悉android developer api
大家可以多试试,开发就是在不断的尝试,不断的分享,让大家共同进步。
- android 动画之---位移抛物线
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- Android动画之translate(位移动画)
- 高通LCD开机图片制作步骤(kernel部分)
- 配置本地yum源
- Android 沉浸式状态栏的实现方法、状态栏透明
- BitSetDemo2 进行数字排序
- Logstash not showing any output (SOLVED)
- android 动画之---位移抛物线
- 资源
- 【软件测试】面向对象的软件测试
- Win7开启共享无线网络
- 简单解决RecyclerView嵌套的RecyclerView条目显示不全和宽度不能铺满
- Java 快速排序
- 创建第一个HTML文件
- js中空字符串和数值0作逻辑对比时应该注意的问题。
- html5中的拖放