modify from ast exercise "set alpha of animationdrawable", we are going to create a new animationdrawable, copy frame from the original myanimationdrawable, and re-arrange frame order in reverse.
modify main.xml to add a imageview for the new animation.
Mã nguồn PHP:
[color=#000000]
[/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="set alpha" /> <seekbar android:id="@+id/setalpha" android:layout_width="fill_parent" android:layout_height="wrap_content" android:progress="255" android:max="255" /> <button android:id="@+id/startanimation" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="start animation" /> <button android:id="@+id/stopanimation" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="stop animation" /> <imageview android:id="@+id/myanimation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@anim/anim_android" /> <imageview android:id="@+id/myanimation2" android:layout_width="fill_parent" android:layout_height="fill_parent" /></linearlayout>
modify the java code, implement a new method copyreversedanim(). it return the new animationdrawable. then set it the imagedrawable of the imageview.
Mã nguồn PHP:
[color=#000000]
package com[/color][color=#007700].[/color][color=#0000bb]exercise[/color][color=#007700].[/color][color=#0000bb]androidanimation[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]app[/color][color=#007700].[/color][color=#0000bb]activity[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]graphics[/color][color=#007700].[/color][color=#0000bb]drawable[/color][color=#007700].[/color][color=#0000bb]animationdrawable[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]os[/color][color=#007700].[/color][color=#0000bb]bundle[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]button[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]imageview[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]seekbar[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]toast[/color][color=#007700];public class [/color][color=#0000bb]androidanimationactivity [/color][color=#007700]extends [/color][color=#0000bb]activity [/color][color=#007700]{ [/color][color=#ff8000]/** called when the activity is first created. */ [/color][color=#007700]@[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]bundle savedinstancestate[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700].[/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]savedinstancestate[/color][color=#007700]); [/color][color=#0000bb]setcontentview[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]layout[/color][color=#007700].[/color][color=#0000bb]main[/color][color=#007700]); [/color][color=#0000bb]imageview myanimation [/color][color=#007700]= ([/color][color=#0000bb]imageview[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]myanimation[/color][color=#007700]); [/color][color=#0000bb]imageview myanimation2 [/color][color=#007700]= ([/color][color=#0000bb]imageview[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]myanimation2[/color][color=#007700]); final [/color][color=#0000bb]animationdrawable myanimationdrawable [/color][color=#007700]= ([/color][color=#0000bb]animationdrawable[/color][color=#007700])[/color][color=#0000bb]myanimation[/color][color=#007700].[/color][color=#0000bb]getdrawable[/color][color=#007700](); [/color][color=#ff8000]//copy a new animationdrawable in reversed order [/color][color=#007700]final [/color][color=#0000bb]animationdrawable reversedanimationdrawable [/color][color=#007700]= [/color][color=#0000bb]copyreversedanim[/color][color=#007700]([/color][color=#0000bb]myanimationdrawable[/color][color=#007700]); [/color][color=#ff8000]//apply the new animationdrawable [/color][color=#0000bb]myanimation2[/color][color=#007700].[/color][color=#0000bb]setimagedrawable[/color][color=#007700]([/color][color=#0000bb]reversedanimationdrawable[/color][color=#007700]); [/color][color=#0000bb]seekbar setanimationalpha [/color][color=#007700]= ([/color][color=#0000bb]seekbar[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]setalpha[/color][color=#007700]); [/color][color=#0000bb]button startanimation [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]startanimation[/color][color=#007700]); [/color][color=#0000bb]button stopanimation [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700])[/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]stopanimation[/color][color=#007700]); [/color][color=#0000bb]startanimation[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]button[/color][color=#007700].[/color][color=#0000bb]onclicklistener[/color][color=#007700](){ @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view arg0[/color][color=#007700]) { [/color][color=#ff8000]// todo auto-generated method stub [/color][color=#007700]if(![/color][color=#0000bb]reversedanimationdrawable[/color][color=#007700].[/color][color=#0000bb]isrunning[/color][color=#007700]()){ [/color][color=#0000bb]myanimationdrawable[/color][color=#007700].[/color][color=#0000bb]start[/color][color=#007700](); [/color][color=#0000bb]reversedanimationdrawable[/color][color=#007700].[/color][color=#0000bb]start[/color][color=#007700](); } }}); [/color][color=#0000bb]stopanimation[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]button[/color][color=#007700].[/color][color=#0000bb]onclicklistener[/color][color=#007700](){ @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view arg0[/color][color=#007700]) { [/color][color=#ff8000]// todo auto-generated method stub [/color][color=#007700]if([/color][color=#0000bb]reversedanimationdrawable[/color][color=#007700].[/color][color=#0000bb]isrunning[/color][color=#007700]()){ [/color][color=#0000bb]myanimationdrawable[/color][color=#007700].[/color][color=#0000bb]stop[/color][color=#007700](); [/color][color=#0000bb]reversedanimationdrawable[/color][color=#007700].[/color][color=#0000bb]stop[/color][color=#007700](); } }}); [/color][color=#0000bb]setanimationalpha[/color][color=#007700].[/color][color=#0000bb]setonseekbarchangelistener[/color][color=#007700](new [/color][color=#0000bb]seekbar[/color][color=#007700].[/color][color=#0000bb]onseekbarchangelistener[/color][color=#007700](){ @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onprogresschanged[/color][color=#007700]([/color][color=#0000bb]seekbar seekbar[/color][color=#007700], [/color][color=#0000bb]int progress[/color][color=#007700], [/color][color=#0000bb]boolean fromuser[/color][color=#007700]) { [/color][color=#0000bb]myanimationdrawable[/color][color=#007700].[/color][color=#0000bb]setalpha[/color][color=#007700]([/color][color=#0000bb]progress[/color][color=#007700]); [/color][color=#0000bb]reversedanimationdrawable[/color][color=#007700].[/color][color=#0000bb]setalpha[/color][color=#007700]([/color][color=#0000bb]progress[/color][color=#007700]); } @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onstarttrackingtouch[/color][color=#007700]([/color][color=#0000bb]seekbar seekbar[/color][color=#007700]) { [/color][color=#ff8000]// todo auto-generated method stub [/color][color=#007700]} @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onstoptrackingtouch[/color][color=#007700]([/color][color=#0000bb]seekbar seekbar[/color][color=#007700]) { [/color][color=#ff8000]// todo auto-generated method stub [/color][color=#007700]}}); } private [/color][color=#0000bb]animationdrawable copyreversedanim[/color][color=#007700]([/color][color=#0000bb]animationdrawable src[/color][color=#007700]){ [/color][color=#0000bb]animationdrawable newanim [/color][color=#007700]= new [/color][color=#0000bb]animationdrawable[/color][color=#007700](); [/color][color=#0000bb]int numberofframe [/color][color=#007700]= [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getnumberofframes[/color][color=#007700](); for([/color][color=#0000bb]int i [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700]; [/color][color=#0000bb]i [/color][color=#007700]< [/color][color=#0000bb]numberofframe[/color][color=#007700]; [/color][color=#0000bb]i[/color][color=#007700]++){ [/color][color=#0000bb]newanim[/color][color=#007700].[/color][color=#0000bb]addframe[/color][color=#007700]( [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getframe[/color][color=#007700]([/color][color=#0000bb]numberofframe [/color][color=#007700]- [/color][color=#0000bb]i [/color][color=#007700]- [/color][color=#0000bb]1[/color][color=#007700]), [/color][color=#0000bb]src[/color][color=#007700].[/color][color=#0000bb]getduration[/color][color=#007700]([/color][color=#0000bb]numberofframe [/color][color=#007700]- [/color][color=#0000bb]i [/color][color=#007700]- [/color][color=#0000bb]1[/color][color=#007700])); } [/color][color=#0000bb]newanim[/color][color=#007700].[/color][color=#0000bb]setoneshot[/color][color=#007700]([/color][color=#0000bb]false[/color][color=#007700]); return [/color][color=#0000bb]newanim[/color][color=#007700]; }}[/color]
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã ban bố bảng xếp hạng kích thước "cậu nhỏ" của các nước trên thế giới. Kết quả, hồ hết các nước xếp ở nhóm đầu của...
"Cu" của bạn trai Việt thuộc nhóm nhỏ nhất hành tinh?