Android 实现倒计时动画效果
生活随笔
收集整理的這篇文章主要介紹了
Android 实现倒计时动画效果
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
想要實現(xiàn)的效果圖如下:
點擊“倒計時開始”按鈕,會出現(xiàn)從10到0的倒計時動畫。說是動畫,其實并不是用animation等來制作,而僅僅是用TextView更新文字的方式來實現(xiàn)動畫效果,很esay,直接上圖。
第一步:制作圓形背景圖
在android中,我們會用shape定義各種各樣的形狀,它能實現(xiàn)漸變色、虛線/分割線、邊框、半透明、半透明陰影效果。圓形背景圖為矢量圖,先上代碼:
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><solid android:color="@color/white" /><strokeandroid:width="4dp"android:color="@color/white" /><paddingandroid:top="1dp"android:left="2dp"android:right="2dp"android:bottom="1dp"/><sizeandroid:width="20dp"android:height="20dp" /> </shape>解釋
- solid 實心填充顏色,十六進(jìn)制顏色值,這里設(shè)置了60%半透明度白色的效果
- stroke 描邊,外邊框,可以設(shè)置顏色和寬度.同時,該屬性也可以用來畫虛線,通過設(shè)置dashGap和dashWidth兩個屬性控制虛線間隔和長度
- padding 內(nèi)容距離邊框的值
- size 指定大小,shape為oval模式時,width和height相等時,代表正圓,否則de為橢圓
第二步:規(guī)劃布局文件,設(shè)置TextView的背景
按照文初看到的效果圖,布局文件中需要有一個可點擊的Button,和一個可以變更數(shù)字的TextView。
- 首先,隱藏TextView的顯示,只顯示一個“倒計時開始”的Button。
-
點擊“倒計時開始”后,將Button隱藏,將TextView顯示出來。
代碼羅列如下:
-
第三步:實現(xiàn)代碼邏輯,用Handler實現(xiàn)動態(tài)更新TextView內(nèi)容
- 初始化控件
- 設(shè)置Button的監(jiān)聽方式為內(nèi)部類監(jiān)聽,原理是通過子線程發(fā)送消息,在主線程中更新UI。
- 定義Handler內(nèi)部類用于接收并處理來自子線程的消息,并判斷當(dāng)前的count值若大于0,繼續(xù)延時發(fā)送消息,直到數(shù)字變?yōu)?.
package com.example.server.testapplication;import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.TextView;public class MainActivity extends Activity {private static final int START_COUNTING = 1;private static final int COUNT_NUMBER = 10;private Button mCountDown;private TextView mStartCount;private MyHandler mHandler = new MyHandler();private ButtonListener mButtonListener = new ButtonListener();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {mCountDown = (Button) findViewById(R.id.count_button);mCountDown.setOnClickListener(mButtonListener);mStartCount = (TextView) findViewById(R.id.count_text);}private class ButtonListener implements View.OnClickListener {@Overridepublic void onClick(View v) {mCountDown.setVisibility(View.GONE);mStartCount.setVisibility(View.VISIBLE);Message msg = mHandler.obtainMessage();msg.what = START_COUNTING;msg.obj = COUNT_NUMBER;mHandler.sendMessageDelayed(msg, 10);}}private class MyHandler extends Handler {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case START_COUNTING:int count = (int) msg.obj;mStartCount.setText(count + "");if (count > 0) {Message msg1 = obtainMessage();msg1.what = START_COUNTING;msg1.obj = count - 1;sendMessageDelayed(msg1, 500);}break;default:break;}}};}
END
如果你一不小心,已經(jīng)看完了,恭喜你,并沒有彩蛋。
我只能祝福你成為
一個年輕的夢想者,
熱愛代碼,
不受束縛!
總結(jié)
以上是生活随笔為你收集整理的Android 实现倒计时动画效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样读书和选书
- 下一篇: Android通过SystemPrope