Android 开场动画
本文为作者原创,允许转载,不过请在文章开头明显处注明链接和出处!!! 谢谢配合~
作者:stars-one
链接:https://www.cnblogs.com/stars-one/p/7397869.html
本篇大约有1996个字,阅读预计需要2.50分钟
呼,忙了两天了这个,找了各种资料,勉勉强强实现我的功能,这个还得改进一下,线程方面的知识没有学到多少,弄了线程画UI有着各种bug,无奈。。就这样跳过先了,哪一天有时间在回来搞一下。
正文————
要实现开头动画,有两种方法,一种是用xml文件定义,第二种则是用java实现。
xml动画中,有着四种基本的动画,如下图片说明
可以使用这四种组合出更加高级的xml动画
使用xml动画的方法过程:
第一步,首先要在res新建一个anim的文件夹,之后,在里面写xml动画文件,如图
第二步,加载资源文件
示范代码如下,改一下后面的R.anin.xxx
1 | Animation animation=AnimationUtils.loadAnimation( this , R.anim.fade_in); |
第三步,为某个控件指定动画
1 | first.startAnimation(animation); |
PS:
- first是一个ImageView
- 这个方法放在线程run()方法里会报错,我对线程不太懂,所以还找不到解决办法
除此之外,一般我们都是要给animation添加监听器,定义动画开始前的行为,动画循坏的行为,和动画结束的行为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | AnimationListener animationlistener = new AnimationListener() { //设置动画监听事件 @Override public void onAnimationStart(Animation arg0) { //动画开始前 // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation arg0) { //动画循坏时 // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation arg0) { //动画结束后 Intent intent = new Intent(); intent.setClass(StartActivity. this , MainActivity. class ); StartActivity. this .startActivity(intent); } }; |
开头动画一般结束之后都是跳转到app主界面的activity,用Intent意图跳转activity
不要忘了在AndroidMainfest里面声明一个activity
1 | animation.setAnimationListener(animationlistener); |
之后设置监听器方法,这个不要忘
使用java方法实现动画效果:
第一步,new一个动画对象
1 2 | AlphaAnimation alphaanimation = new AlphaAnimation( 0 .0f, 1 .0f); //透明度从0.0(完全透明)到1.0(完全不透明) |
上述代码就是实现淡入效果的,举一反三,其他的这里便不多说
第二步,为对象设置相关属性,
1 2 | alphaanimation.setDuration( 3000 ); //设置动画持续时间为3s alphaanimation.setFillAfter( true ); //设置动画结束后保留当前状态 |
当然不止这两种属性,不过常用的就这两种了,其他的话,百度吧
第三步,为控件指定动画
1 | first.startAnimation(alphaanimation); |
PS:参数就是上述的对象名
个人使用中遇到的问题:
如果控件的visibility属性为gone的话,动画效果无法显示出来,要将visibility属性改为invisible,这样就行了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?