android倒计时动画特效,Android仿活动时分秒倒计时效果

本文实例为大家分享了Android时分秒倒计时效果的具体代码,供大家参考,具体内容如下

从mian.xml下手:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="离结束时间为:"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_marginTop="10dp"

android:orientation="horizontal">

android:id="@+id/tvtime1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:gravity="center"

android:background="#3B3B3B"

android:text="12"

android:textColor="#FFFFFF"

android:textSize="30sp" />

android:id="@+id/tvtime2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:layout_marginLeft="10dp"

android:gravity="center"

android:text="12"

android:textColor="#FFFFFF"

android:background="#3B3B3B"

android:textSize="30sp" />

android:id="@+id/tvtime3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:layout_marginLeft="10dp"

android:gravity="center"

android:background="#3B3B3B"

android:textColor="#FFFFFF"

android:text="13"

android:textSize="30sp" />

MainActivity

public class MainActivity extends Activity {

private TextView tvtime1,tvtime2,tvtime3;

private long time=400;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tvtime1=(TextView)findViewById(R.id.tvtime1);

tvtime2=(TextView) findViewById(R.id.tvtime2);

tvtime3=(TextView) findViewById(R.id.tvtime3);

handler.postDelayed(runnable, 1000);

}

Handler handler = new Handler();

Runnable runnable = new Runnable() {

@Override

public void run() {

time--;

String formatLongToTimeStr = formatLongToTimeStr(time);

String[] split = formatLongToTimeStr.split(":");

for (int i = 0; i < split.length; i++) {

if(i==0){

tvtime1.setText(split[0]+"小时");

}

if(i==1){

tvtime2.setText(split[1]+"分钟");

}

if(i==2){

tvtime3.setText(split[2]+"秒");

}

}

if(time>0){

handler.postDelayed(this, 1000);

}

}

};

public String formatLongToTimeStr(Long l) {

int hour = 0;

int minute = 0;

int second = 0;

second = l.intValue() ;

if (second > 60) {

minute = second / 60; //取整

second = second % 60; //取余

}

if (minute > 60) {

hour = minute / 60;

minute = minute % 60;

}

String strtime = hour+":"+minute+":"+second;

return strtime;

}

}

效果图:

361f9c0e8b9a5082f0421d7784509ee3.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 上实现倒计时动画,可以参考以下步骤: 1. 创建一个自定义 View,并在其中实现倒计时动画的绘制逻辑。 2. 在 View 中添加一个计时器,每隔一段时间更新倒计时的数值,并调用 invalidate() 方法刷新界面。 3. 在绘制逻辑中,根据当前的倒计时数值计算出圆环的弧度,并使用 Canvas 绘制圆环和数字。 4. 可以添加一些动画效果,例如圆环的渐变填充色、数字的放大缩小等等,增强视觉效果。 以下是一个简单的示例代码,仅供参考: ``` public class CountDownView extends View { private static final long COUNT_DOWN_INTERVAL = 1000; // 倒计时间隔,默认为 1 秒 private static final int DEFAULT_COUNT_DOWN_TIME = 60; // 默认倒计时时间为 60 秒 private Paint mPaint; private RectF mRectF; private float mSweepAngle; private int mCountDownTime; private long mStartTime; private boolean mIsCountingDown; public CountDownView(Context context) { this(context, null); } public CountDownView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CountDownView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // 初始化画笔 mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(10); // 初始化圆弧矩形 mRectF = new RectF(); // 初始化倒计时时间 mCountDownTime = DEFAULT_COUNT_DOWN_TIME; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // 计算圆弧矩形 int width = MeasureSpec.getSize(widthMeasureSpec); int height = MeasureSpec.getSize(heightMeasureSpec); int size = Math.min(width, height); int padding = 10; mRectF.set(padding, padding, size - padding, size - padding); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 绘制圆弧 mPaint.setColor(Color.GRAY); canvas.drawArc(mRectF, 0, 360, false, mPaint); mPaint.setColor(Color.BLUE); canvas.drawArc(mRectF, -90, mSweepAngle, false, mPaint); // 绘制数字 mPaint.setColor(Color.BLACK); mPaint.setTextSize(50); String text = String.valueOf(mCountDownTime); Rect textBounds = new Rect(); mPaint.getTextBounds(text, 0, text.length(), textBounds); canvas.drawText(text, mRectF.centerX() - textBounds.width() / 2, mRectF.centerY() + textBounds.height() / 2, mPaint); } public void startCountDown() { if (mIsCountingDown) { return; } mIsCountingDown = true; mStartTime = System.currentTimeMillis(); post(countDownRunnable); } public void stopCountDown() { mIsCountingDown = false; removeCallbacks(countDownRunnable); } private Runnable countDownRunnable = new Runnable() { @Override public void run() { long elapsedTime = System.currentTimeMillis() - mStartTime; int remainingTime = mCountDownTime - (int) (elapsedTime / COUNT_DOWN_INTERVAL); if (remainingTime >= 0) { mSweepAngle = (float) remainingTime / mCountDownTime * 360; invalidate(); postDelayed(this, COUNT_DOWN_INTERVAL); } else { stopCountDown(); } } }; } ``` 使用时可以调用 startCountDown() 方法开始倒计时,调用 stopCountDown() 方法停止倒计时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值