日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 实现倒计时动画效果

發(fā)布時間:2024/1/18 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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顯示出來。
    代碼羅列如下:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/gray"android:gravity="center"tools:context="com.example.server.testapplication.MainActivity"><TextViewandroid:id="@+id/count_text"android:layout_width="350dp"android:layout_height="350dp"android:background="@drawable/circle"android:gravity="center"android:textColor="@color/black"android:textSize="240sp"android:visibility="gone" /><Buttonandroid:id="@+id/count_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="倒計時開始..." /> </RelativeLayout>
  • 第三步:實現(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。