一種Android 類似電影倒計時效果

來源:互聯網
上載者:User

 

  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(R.layout.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="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="@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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.