Android

您所在的位置:网站首页 跟try很像的歌 Android

Android

2024-07-13 11:37:30| 来源: 网络整理| 查看: 265

大纲

主要想实现的是在一个页面中播放一个动画、就像突然洒金币的效果。 我想要的效果是一个activity覆盖一个activity,并透明。 本文章主要讲如何在动画activity中播放gif动画:(第一种需要把gif转换成一帧一帧的格式,后两种方式是需要把gif--转换成mp4)

通过逐帧动画 内存泄漏、heap size 常识大小 -xms -xmx 通过webview播放 为了效果更好,应该对webview进行以下处理: webview背景透明 webview右下角缩放按钮 webview隐藏滚动条 屏幕单机、双击放大、滑动无响应事件 定时销毁动画activity webview屏幕适配 通过videoview播放(将gif--mp4) 自定义videoview 让播放布满整个屏幕 videoview隐藏进度条 videoview播放本地文件 获取res/raw的绝对地址 通过surfaceview播放(将gif--mp4) 学习地址:点这里 通过glide开源库直接播放gif 自行查阅 对于复杂动画大内存mp4 .gif 推荐使用https://github.com/airbnb/lottie-android com.airbnb.android:lottie这个库,让设计师将复杂view通过工具转成json形式,android客户端通过加载json方式加载动画,实现很多复杂动效。 大杀器Lottie:把AE动画转换成Android原生动画 这部分工作主要在设计师那里,但这种方式是最轻量切动画效果最好,能很好的播放各种炫酷动画 通过逐帧动画

首先了解:android动画分类 逐帧播放应该是最简单的一种的,就是把连续的图片连起来播放,设置每帧的时间 有两种方式、一种是xml 一种是代码方式实现, 本例我选择代码方式,用一个imageview作为承载,

// 核心代码如下: private AnimationDrawable anim; private ImageView imageView; private void init() { LayoutInflater inflater= (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.red_packets_frame_animation_view_layout,this); imageView=findViewById(R.id.imageView); anim=new AnimationDrawable(); } public void play_animation(){ for (int i=10;i4000){ //startTime = endTime; Message message=new Message(); message.what=0; handler.sendMessage(message); } } } .start(); } @Override public void onBackPressed() { super.onBackPressed(); webView.destroy(); finish(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()){ case MotionEvent.ACTION_SCROLL: return true; case MotionEvent.ACTION_MOVE: return true; case MotionEvent.ACTION_POINTER_DOWN: return true; case MotionEvent.ACTION_MASK: return true; case MotionEvent.ACTION_DOWN: return true; default: break; } return super.dispatchTouchEvent(ev); } }

记得设置activity透明,这样透明的gif的效果就浮现在另一个activity上,效果相对较好。

android:theme="@android:style/Theme.Translucent.NoTitleBar"

通过videoview播放

因为videoview有默认尺寸,而我们想实现全屏动画,需要改变它默认大小 所以要重写相对方法,获得全屏尺寸

private int screenWidth; private int screenHeigh; //提供一个接口 让activity传入尺寸 public void setMetrics(int width,int height){ screenWidth=width; screenHeigh=height; } //重新绘制 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(screenWidth, screenHeigh); } //核心代码如下 public class AnimationActivity3 extends Activity { private GifVideoView gifVideoView; private MediaController mc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation3); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width=dm.widthPixels; int heigh=dm.heightPixels; gifVideoView=findViewById(R.id.gifVideoView); mc = new MediaController(this); mc.setVisibility(View.INVISIBLE); gifVideoView.setMetrics(width,heigh); gifVideoView.setBackgroundColor(0); gifVideoView.setMediaController(mc); Uri uri=Uri.parse( "android.resource://"+getPackageName()+"/"+R.raw.test); gifVideoView.setVideoURI(uri); gifVideoView.start(); gifVideoView.requestFocus(); //视频编码格式不支持的情况 gifVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int what, int extra) { if(what==MediaPlayer.MEDIA_ERROR_SERVER_DIED){ Log.v("view exception","Media Error,Server Died"+extra); }else if(what==MediaPlayer.MEDIA_ERROR_UNKNOWN){ Log.v("video exception","Media Error,Error Unknown "+extra); } return true; } }); } @Override public void onBackPressed() { super.onBackPressed(); finish(); } }

小demo效果如图:

Untitled.gif demo源码地址 留个赞吧鼓励一下。有什么建议或事好的想法可以私聊或评论,我也是初试了解这几种方式。


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭