Android 开发弄一个倒计时的界面?

 我来答
春新快马打擂台C
推荐于2016-04-29 · TA获得超过551个赞
知道答主
回答量:222
采纳率:0%
帮助的人:151万
展开全部
用SurfaceView 做的一个倒计时的界面:
public class CountDownView extends SurfaceView implements Callback, Runnable{
//
private SurfaceHolder sfh;
//画布
private Canvas canvas;
//线程是否开起的标识
private boolean flag;

//背景画笔
Paint backgroundPaintpaint;
//绘制数字的画笔
Paint paintText;
//声明一条线程
private Thread th;
//二级计数器
long timeBox;
//倒计时数字
long time;

public void myDraw()
{
canvas = sfh.lockCanvas();
try {
//二级计数器自加
timeBox++;
if(canvas != null)
{
//绘制背景--全黑
canvas.drawRect(0, 0, this.getWidth(), this.getHeight(), backgroundPaintpaint);
if(timeBox%8 == 0)
{
//50*8 毫秒绘制一个数字
if(time > 0)
{
time--;
}else{time = 9;}

}
canvas.drawText(String.valueOf(time), this.getWidth()/2, this.getHeight()/2+50, paintText);
}
} catch (Exception e) {

}finally
{
sfh.unlockCanvasAndPost(canvas);
}
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
}
public CountDownView(Context context)
{
super(context);
sfh = this.getHolder();
sfh.addCallback(this);
canvas = new Canvas();
time = 9;
//二级计数器
timeBox = 0;
//设置背景常亮
this.setKeepScreenOn(true);
//
}
@Override
public void run()
{
while(flag)
{
long start = System.currentTimeMillis();
myDraw();
long end = System.currentTimeMillis();
try {
if(end - start < 50)
{
Thread.sleep(50 -(end-start));
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
//实例背景画笔
backgroundPaintpaint = new Paint();
//设置背景画笔为黑色
backgroundPaintpaint.setColor(Color.BLACK);
//实例数字画笔
paintText = new Paint();
//设置风格
paintText.setStyle(Paint.Style.STROKE);
//设置居中
paintText.setTextAlign(Paint.Align.CENTER);
//设置着色
paintText.setColor(Color.BLUE);
//设置大小
paintText.setTextSize((float) (38*7.5));

//标识线程开起
flag = true;
//实例线程
th = new Thread(this);
//开起线程
th.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
//关闭线程
flag = false;
}
}

程序入口:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置全屏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new CountDownView(this));
}
}
刘小彻687
2012-07-26
知道答主
回答量:2
采纳率:0%
帮助的人:2.8万
展开全部
叫 days matter ,可以去安卓市场下载
追问
我说的是开发
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
往事如烟随风尽
2012-07-26
知道答主
回答量:3
采纳率:0%
帮助的人:4680
展开全部
自带的就有吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式