博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何以特定的时间间隔为图片添加动画效果?
阅读量:7103 次
发布时间:2019-06-28

本文共 2529 字,大约阅读时间需要 8 分钟。

系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术,本文为大家讲解在Android中,如何以特定的时间间隔为图片添加动画效果。

在Android的开发过程中,我用的是Coursera类别,以下是我想要实现的静态效果图:

目前,我采用的代码是:

XML:

1
2
3
4
5
6
7
8
<Button
        
android:id=
"@+id/startbutton"
        
android:layout_width=
"wrap_content"
        
android:layout_height=
"wrap_content"
        
android:layout_above=
"@+id/leftfoot"
        
android:layout_alignRight=
"@+id/leftfoot"
        
android:onClick=
"startRhythmandAnimation"
        
android:text=
"@string/start_button"
/>
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Assignment3MainActivity extends Activity {
 
private View mMileTimeGoal;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    
super
.onCreate(savedInstanceState);
    
setContentView(R.layout.activity_assignment3_main);
    
mMileTimeGoal = findViewById(R.id.miletimegoal);
}
 
public void startRhythmandAnimation () {
    
String MileTime = mMileTimeGoal.getContext().toString();
    
String[] time_array = MileTime.split(
":"
);
    
int hours = Integer.parseInt(time_array[0]);
    
int minutes = Integer.parseInt(time_array[1]);
    
int seconds = Integer.parseInt(time_array[2]);
    
int duration = 3600 * hours + 60 * minutes + seconds;
    
int steps_per_second = 3;
 
    
int running_rate = duration * steps_per_second;
 
    
View rightfoot = findViewById(R.id.rightfoot);
    
View leftfoot = findViewById(R.id.leftfoot);
 
    
rightfoot.setVisibility(View.VISIBLE);
    
Animation anim = AnimationUtils.makeInChildBottomAnimation(
this
);
    
rightfoot.startAnimation(anim);
 
    
leftfoot.setVisibility(View.VISIBLE);
    
leftfoot.startAnimation(anim);
}
我应该采用什么算法,来完成左、右脚的淡入淡出的“运动”呢?需要设定一种循环运动的定时器吗?

我觉得,你可以采用如下代码:

Activity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private Handler mHandler;   
private long mInterval = 1000;
private View mLeftfoot;
private Animation mFootAnim;
 
public void onCreate(Bundle bundle) {
   
...
   
mHandler =
new
Handler();
//.os package class when importing
   
mLeftfoot = findViewById(R.id.leftfoot);
   
mFootAnim = AnimationUtils.loadAnimation(
this
, R.anim.foot);
   
stepRecursive();
}
 
private void stepRecursive() {
    
mHandler.postDelayed(
new
Runnable() {
        
@Override
        
public void run() {
            
mLeftFoot.startAnimation(mFootAnim );
            
stepRecursive();
        
}
    
}, mInterval);
}
/res/anim/foot.xml
1
2
3
4
5
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<set xmlns:android=
""
>
    
<translate android:fromYDelta=
"0"
android:toYDelta=
"-15"
android:duration=
"400"
/>
    
<alpha android:fromAlpha=
"1.0"
android:toAlpha=
"0"
android:duration=
"400"
/>
</set>

这是我认为最直接的解决办法,当然,你可以针对特定的需要,再完善以上的代码。

 

转载于:https://www.cnblogs.com/aikongmeng/p/3697322.html

你可能感兴趣的文章
使用WM_QUIT终止线程
查看>>
String字符串的常用方法
查看>>
文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr/chattr
查看>>
开启华为交换机路由器ssh访问
查看>>
linux 中的sar命令 与gnuplot绘图
查看>>
解决网站遭CC攻击(转载)
查看>>
软考题
查看>>
Django之单元测试
查看>>
Spring 项目全介绍
查看>>
“你的深度学习框架包含15个漏洞”,360说 | 附论文
查看>>
Android应用程序组件Content Provider的启动过程源代码分析(3)
查看>>
部署及配置ISCSI Target,Livemigration系列之三
查看>>
rundeck Web页面配置node节点
查看>>
Java程序员,笔试必读
查看>>
mySQL教程 第4章 数据查询
查看>>
linux 下 eclipse 开发环境的搭建
查看>>
android中DatePicker&TimePicker的应用
查看>>
JavaScript和C#通用gb2312和utf8编码解码函数简单实现
查看>>
在创建触发器时出现不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列...
查看>>
arguments,callee&caller测试
查看>>