Android简易时钟(animation的使用)


今天主要学习了一下动画的有关知识。参考书的内容特别有限,感觉讲的太过浅显,一共就两三页的样子,代码就占了大部分。。导致中间遇到了许多纠结的问题。。不过可能是对游戏开发知识的欠缺(因为每次都是用什么就学什么的。。木有系统的看过参考书唉。。只能自作自受了。。),导致有的地方不明白,耽误了挺多时间,真的学会之后发现加个动画还是很简单的嘛~以后做Android应用应当用点心,除了功能之外,加上PS和动画的使用,获得更好的用户体验,是每一个女程序员的职责呼呼O(∩_∩)O~再次强调。。没审美。。真可怕。。

好了,不费话了,下面就本次实验遇到的问题总结一下~对初学者来说应当是很有帮助的~估计会遇到和我同样的问题~(大牛就不要费时间嘲笑我了。。)本人实在是查了很多很多的网上的资料唉。。大部分都雷同,没有细说,bug总是凭借想象力试着de出来的。。那就言归正传咯~

PS:我是用的xml文档添加动画的方式~个人比较喜欢这种分离的方式~感觉比较清晰~算是低耦合的体现。。。吧。。。(软概木有好好学。。)

1、加载动画的时候用到了这个函数AnimationUtils.loadAnimation(this, R.anim.second);  其中的R.anim怎么也找不到。。后来发现我是习惯性的把动画的xml文档建在了Layout文件夹下。。应该再res下新建一个anim,把动画的xml配置文件放在这里就好啦~

顺便附上java代码中实现动画的关键代码吧~

second = (ImageView) findViewById(R.id.second);


secondAnimation = AnimationUtils.loadAnimation(this, R.anim.second); 


second.startAnimation(secondAnimation);


2、众所周知,时针分针秒针都有重合的可能,刚开始我想初始化为12点,但是在布局文件里怎么调都不行,无法覆盖。之后想到了图层,找相关资料的时候看到了布局嵌套的代码,这个我还是第一次知道,发现使用布局嵌套就能够重合了。。以后布局的使用要更加灵活些了~我用的是相对布局中嵌套相对布局。

3、好不容易秒针可以动了,却是贱扭扭的飘走了。。汗啊。。真是让我哭笑不得。。肯定要用pivotX和pivotY来确定中心点,但是对于这个属性的解释(动画相对于物件的X、Y坐标的开始位)我着实没有看懂。。并且各种资料说的都一样的。。于是乎~本人决定采用找规律的办法来观察。。早知道早找规律了,其实就是个旋转中心点的坐标表示,最左上角是0%,关键这里所说的控件就是整个屏幕了,至少我这次的程序是这样。。刚开始我理解的是相对于秒针来说的位置,设X为0%,Y为100%,会出现非常诡异的飘走现象。。

附上代码吧~

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:fromDegrees="0"
android:toDegrees="+360"
android:duration="60000"
android:pivotX="68%"                  //一点点调的好纠结。。。
android:pivotY="63%"
android:repeatCount="-1"/>       //这个是设置为无限循环 (当然xml的注释不是这样滴~)
</set>

4、匀速旋转问题是个搞笑的问题。。因为没有试过的孩子肯定不会把它称之为问题。。安卓美名其曰的说默认的就是匀速的。。殊不知。。他实在是太智能了。。指针明明是先加速又减速的旋转的,中间估计是匀速,但是到了一圈之后会感觉有小的停顿,查了资料发现也有人有同样的问题。。据说是不能直接修改xml文档的,因为interpolator中的加速器自然也没有匀速的,所以要在java代码中加入这样的几句:

LinearInterpolator lir = new LinearInterpolator(); 
secondAnimation.setInterpolator(lir);

然后再Start就好了~

总的来说,时钟还是比较简单的,时针分针秒针的思路都差不多,就是改改duration的时间,还有pivotX,Y的值,这个值不知道有什么好办法,估计是凭经验吧,我一点点的试的,废了好多时间唉。。感觉最近的编程总是体力活啊。。。最后上张图吧~这次PS没怎么费工夫,关键网速太慢了,弄的自己好没心情。。看教程都看不成。。整个表盘加上文字是背景图片,是从一个真实的表上P的,用了仿制印章,也是一点点弄的。。唉。。什么都是精细活啊。。估计还是自己太水了。。才只能用笨笨的办法一点点的调。。。所以这次界面就好粗糙了。。PS还是应该加强啊~

相关内容