Android抛物线下载动画制作过程
2019/7/7 21:07:54
本文主要是介绍Android抛物线下载动画制作过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
下载动画经常出现在下载需求多的app中,比如游戏下载平台,应用市场……
先看看效果图:
实现
private void startAnim() { //以bitmap创建new ImageView iv.setDrawingCacheEnabled(true); Bitmap bitmap = iv.getDrawingCache(); ImageView logo = new ImageView(this); logo.setScaleType(ImageView.ScaleType.FIT_XY); logo.setImageBitmap(bitmap); int[] startLocation = new int[2]; iv.getLocationInWindow(startLocation); end.getLocationInWindow(location_download); setAnim(logo, startLocation, location_download); }
设置动画
private void setAnim(final ImageView logo, int[] startLocation,int[] location_download) { ViewGroup animMaskLayout = createAnimLayout(); animMaskLayout.addView(logo);// 把动画小球添加到动画层 // 计算位移 final View view = addViewToAnimLayout(logo, startLocation); // 动画位移的X坐标 int endY = location_download[1] - startLocation[1]; // 动画位移的y坐标 TranslateAnimation translateAnimationX = new TranslateAnimation(0, endX, 0, 0); translateAnimationX.setInterpolator(new LinearInterpolator()); translateAnimationX.setRepeatCount(0);// 动画重复执行的次数 translateAnimationX.setFillAfter(true); 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(2000);// 动画的执行时间 view.startAnimation(set); // 动画监听事件 set.setAnimationListener(new Animation.AnimationListener() { // 动画的开始 @Override public void onAnimationStart(Animation animation) { logo.setVisibility(View.VISIBLE); } @Override public void onAnimationRepeat(Animation animation) { } // 动画的结束 @Override public void onAnimationEnd(Animation animation) { logo.setVisibility(View.GONE); } }); }
创建动画父布局
private ViewGroup createAnimLayout() { ViewGroup rootView = (ViewGroup) getWindow().getDecorView(); LinearLayout animLayout = new LinearLayout(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); animLayout.setLayoutParams(lp); animLayout.setId(Integer.MAX_VALUE); animLayout.setBackgroundResource(android.R.color.transparent); rootView.addView(animLayout); return animLayout; }
设置动画布局参数
private static View addViewToAnimLayout(final View view, int[] location) { int x = location[0]; int y = location[1]; LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(80, 80); lp.leftMargin = x; lp.topMargin = y; view.setLayoutParams(lp); return view; }
代码就到此结束了,看起来并不难,动手试试吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。
这篇关于Android抛物线下载动画制作过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路