一种Android 类似电影倒计时效果
一种Android 类似电影倒计时效果
发布时间:2015-06-05 来源:查字典编辑
摘要:1、Activityimportjava.util.Timer;importjava.util.TimerTask;importandroi...

一种Android 类似电影倒计时效果1

1、Activity

import java.util.Timer;

import java.util.TimerTask;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.Animation;

import android.view.animation.RotateAnimation;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

public class Test extends Activity {

private long mlCount = 50;

private long mCount = 0;

TextView tvTime;

private Button startbuttondaoji;

private Timer timer = null;

private TimerTask task = null;

private Handler handler = null;

private Message msg = null;

private ImageView min_progress, min_progress_hand;

Animation rotateAnimation;

float predegree = 0;

boolean okclear = false;

@SuppressLint("HandlerLeak")

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

init();

}

private void init() {

setContentView(yout.test);

tvTime = (TextView) findViewById(R.id.duocitvTime);

startbuttondaoji = (Button) findViewById(R.id.startbuttonduoci);

min_progress = (ImageView) this.findViewById(R.id.duocimin_progress);

min_progress_hand = (ImageView) this

.findViewById(R.id.duocimin_progress_hand);

tvTime.setText("4");

SaveRun.setisjishi(false);

handler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

if(mlCount>1){

mlCount--;

mCount++;

}else{

break;

}

int totalSec = 0;

totalSec = (int) (mlCount / 10);

int sec = (totalSec % 60);

try {

rotateAnimation = new RotateAnimation(predegree,

(float) (36 * mCount),

Animation.RELATIVE_TO_SELF, 0.5f,

Animation.RELATIVE_TO_SELF, 0.5f);

rotateAnimation.setDuration(100);

rotateAnimation.setFillAfter(false);

min_progress_hand.startAnimation(rotateAnimation);

min_progress.startAnimation(rotateAnimation);

tvTime.setText(String.format("%1$2d",

sec));

predegree = (float) (36 * mCount);

} catch (Exception e) {

tvTime.setText( sec +"");

e.printStackTrace();

}

break;

default:

break;

}

super.handleMessage(msg);

}

};

}

@Override

protected void onStart() {

star();

super.onStart();

}

private void star() {

startbuttondaoji.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

startbuttondaoji.setVisibility(View.GONE);

if (null == timer) {

if (null == task) {

SaveRun.setisjishi(true);

okclear = false;

min_progress.setVisibility(View.VISIBLE);

task = new TimerTask() {

@Override

public void run() {

if (null == msg) {

msg = new Message();

} else {

msg = Message.obtain();

}

msg.what = 1;

handler.sendMessage(msg);

}

};

}

timer = new Timer(true);

timer.schedule(task, 100, 100);

}

}

});

}

View.OnClickListener startPauseListener = new View.OnClickListener() {

@Override

public void onClick(View v) {

if (null == timer) {

if (null == task) {

SaveRun.setisjishi(true);

okclear = false;

min_progress.setVisibility(View.VISIBLE);

task = new TimerTask() {

@Override

public void run() {

if (null == msg) {

msg = new Message();

} else {

msg = Message.obtain();

}

msg.what = 1;

handler.sendMessage(msg);

}

};

}

timer = new Timer(true);

timer.schedule(task, 100, 100);

} else {

try {

SaveRun.setisjishi(false);

okclear = true;

task.cancel();

task = null;

timer.cancel();

timer.purge();

timer = null;

handler.removeMessages(msg.what);

} catch (Exception e) {

e.printStackTrace();

}

}

}

};

}

2、布局文件

<RelativeLayout xmlns:android="/apk/res/android" xmlns:tools="/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_dark" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/buttonlinear" > <ImageView android:id="@+id/duocimin_dial" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/iv_bg" /> <ImageView android:id="@+id/duocimin_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/min_progress" android:visibility="invisible" /> <ImageView android:id="@+id/duocimin_progress_hand" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/min_progress_hand" /> <TextView android:id="@+id/duocitvTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="00:00.0" android:textSize="35sp" android:textStyle="bold" /> <LinearLayout android:id="@+id/duocihoursoflinear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/duocitvTime" android:layout_centerHorizontal="true" android:gravity="center" android:orientation="horizontal" android:visibility="invisible" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/duocimin_dial" android:gravity="center_horizontal" android:orientation="horizontal" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="100sp" > </RelativeLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > </RelativeLayout> </LinearLayout> </RelativeLayout> <RelativeLayout android:id="@+id/buttonlinear" android:layout_width="match_parent" android:layout_height="74sp" android:layout_alignParentBottom="true" android:background="@drawable/v5_bottom_bar_bg_light" > <Button android:id="@+id/startbuttonduoci" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginLeft="10sp" android:layout_marginRight="10sp" android:background="@drawable/startback" android:text="开 始" /> </RelativeLayout> </RelativeLayout>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类