歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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還是應該加強啊~

Copyright © Linux教程網 All Rights Reserved