首页 > 其他分享 >2023/4/26

2023/4/26

时间:2023-05-15 09:23:38浏览次数:34  
标签:26 layout stop start 2023 android btn id

1.帧动画概念以及用法

帧动画非常容易理解,其实就是简单的由N张静态图片收集起来,然后我们通过控制依次显示
这些图片,因为人眼“视觉残留”的原因,会让我们造成动画的“错觉”,跟放电影的原理一样!
而Android中实现帧动画,一般我们会用到前面讲解到的一个Drawable:AnimationDrawable
先编写好Drawable,然后代码中调用start()以及stop()开始或停止播放动画~
当然我们也可以在Java代码中创建逐帧动画,创建AnimationDrawable对象,然后调用
addFrame(Drawable frame,int duration)向动画中添加帧,接着调用start()和stop()而已~
下面我们来写两个例子体会下帧动画的效果以及熟悉下用法

2.使用示例:
示例一:最简单的例子:
运行效果图:

 

代码实现:

首先编写我们的动画文件,非常简单,先在res下创建一个anim目录,接着开始撸我们的
动画文件:miao_gif.xml:
这里的android:oneshot是设置动画是否只是播放一次,true只播放一次,false循环播放!

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@mipmap/img_miao1"
android:duration="80" />
<item
android:drawable="@mipmap/img_miao2"
android:duration="80" />
<item
android:drawable="@mipmap/img_miao3"
android:duration="80" />
<!--限于篇幅,省略其他item,自己补上-->
...
</animation-list>

动画文件有了,接着到我们的布局文件:activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始" />

<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止" />

<ImageView
android:id="@+id/img_show"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:background="@anim/miao_gif" />

</LinearLayout>

最后是我们的MainActivity.java,这里在这里控制动画的开始以及暂停:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button btn_start;
private Button btn_stop;
private ImageView img_show;
private AnimationDrawable anim;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindViews();
anim = (AnimationDrawable) img_show.getBackground();
}

private void bindViews() {
btn_start = (Button) findViewById(R.id.btn_start);
btn_stop = (Button) findViewById(R.id.btn_stop);
img_show = (ImageView) findViewById(R.id.img_show);
btn_start.setOnClickListener(this);
btn_stop.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
anim.start();
break;
case R.id.btn_stop:
anim.stop();
break;
}
}
}

 

标签:26,layout,stop,start,2023,android,btn,id
From: https://www.cnblogs.com/lklyouhouhou/p/17400822.html

相关文章

  • 2023/4/27
     表单<formaction="demo_form.php"method="post/get"><inputtype="text"name="email"size="40"maxlength="50"><inputtype="password"><inputtype="checkbox"......
  • 2023/4/28
    无序列表<ul><li>项目</li><li>项目</li></ul>有序列表<ol><li>第一项</li><li>第二项</li></ol>定义列表<dl><dt>项目1</dt><dd>描述项目1</dd><dt>项目2&l......
  • 2023/5/15之前关于MongoDB的学习实践
    showdbs/collections/tables;use库创建库db.dropDatabase();删除库db.createCollections('');创建集合db.集合.drop();删除集合db.集合.insertOne/Many集合中插入数据db.集合.remove();删除文档for(leti=x;i<x;i++){}循环操作db.集合.update({条件},{$set:{更改后}})......
  • 2023.5.14
    1#include<iostream>2usingnamespacestd;3#include<vector>4voidprintVector(vector<int>&v)5{6for(vector<int>::iteratorit=v.begin();it<v.end();it++)7{8cout<<*it<<......
  • 编程一小时2023.5.14
    #include<iostream>#include<vector>usingnamespacestd;boolcmp(vector<int>&A,vector<int>&B){if(A.size()!=B.size())returnA.size()>B.size();for(inti=A.size()-1;i>=0;i--)if(A[i]!=B[i])re......
  • 【2023-05-13】连岳摘抄
    23:59善于等待的人,一切都会及时来到。                                                 ——巴尔扎克功名利禄,荣华富贵,确实要看淡。看淡了才不偏执,不会趋炎附势,也不......
  • 【2023-05-12】连岳摘抄
    23:59我们一起缅怀故人,回忆向来使人们相互亲近,而充满爱的回忆则加倍地使人们相互亲近。                                                 ——茨威格我趋向于认为,一......
  • NOIP 2023 模拟赛五 题解
    A.[NOIP2023模拟赛五ByFXTA]简单数学题summarization给出一个值域为\([1,m]\)的正整数序列\(a_{1\simn}\),序列中的数各不相同,求出使\(a_i^2+a_j\)为完全平方数的\((i,j)\)的对数。solution实际上就是求\(x^2+y=z^2\quad(x,y,z\in\mathbb{N}^+)\)的\((x,y)\)......
  • CHSBO 2023 游记
    南京一日游到南京就像回家一样,又像是「一次奇妙的旅行」第一次有指导老师和带队老师,却仍然蒟蒻显得迷茫彷徨不成体系的学习,换来东拼西凑的知识一个个未曾相逢的大分子,正如未写过的平衡树般,不停变换着我的构象六十分,挂成了多测不清的模样六百页《普通动物学》,是......
  • 2023大连思科-英语技术顾问(BDE)笔试技术卷编程题
    记录自己第一次手撕代码...1.html实现以下布局2.给定一个包含n个正整数的数组和一个正整数s,找出数组中满足其和sum>=s的长度最小的连续子数组,并返回其长度。如果不存在子数组,则返回0。publicintminSubArrayLen(inttarget,int[]nums){intleft=0;......