1、倒计时APP
运行图示:**
Android studio 学习3:实现倒计时、画板_第1张图片
Android studio 学习3:实现倒计时、画板_第2张图片

xml代码

<?xml version="1.0" encoding="utf-8"?>        

java代码

import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import java.util.Timer;import java.util.TimerTask;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private EditText input_time;    private Button getTime,startTime,stopTime;    private TextView time;    private int i = 0;    private Timer timer = null;    private TimerTask task = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate( savedInstanceState );        setContentView( R.layout.activity_main );        initView();    }    private void initView(){        input_time = (EditText) findViewById( R.id.input_time );        getTime = (Button) findViewById( R.id.get_time );        startTime = (Button) findViewById( R.id.start_time );        stopTime = (Button) findViewById( R.id.stop_time );        time = (TextView) findViewById( R.id.time );        getTime.setOnClickListener( this );        stopTime.setOnClickListener( this );        startTime.setOnClickListener( this );    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.get_time:                time.setText( input_time.getText().toString() );                i = Integer.parseInt( input_time.getText().toString() );                break;            case R.id.start_time:                StartTime();                break;            case R.id.stop_time:                StopTime();                break;        }    }    private Handler mHandler = new Handler(){        public void handleMessage(Message msg) {            time.setText(msg.arg1+"");            StartTime();        };    };    public void StartTime(){        timer = new Timer();        task = new TimerTask() {            @Override            public void run() {                i--;                Message message = mHandler.obtainMessage();                message.arg1 = i;                mHandler.sendMessage( message );            }        };        timer.schedule( task, 1000 );    }    public void StopTime(){        timer.cancel();    }}

2、画板APP
xml代码

<?xml version="1.0" encoding="utf-8"?>        

java代码1

package com.example.drawingboard;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private Button btn;    private MyView view;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate( savedInstanceState );        setContentView( R.layout.activity_main );        btn = (Button)findViewById( R.id.btn );        view = (MyView)findViewById( R.id.draw ) ;        btn.setOnClickListener( new View.OnClickListener() {            @Override            public void onClick(View v) {                view.clear();            }        } );    }}

java代码2

package com.example.drawingboard;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;public class MyView extends SurfaceView implements SurfaceHolder.Callback, View.OnTouchListener {    private Paint p = new Paint();    private Path path = new Path();    public MyView(Context context, AttributeSet attrs) {        super(context, attrs);        getHolder().addCallback( this );        p.setColor( Color.RED  );        p.setTextSize( 50 );        p.setStyle( Paint.Style.STROKE );//        p.setAntiAlias( true );        setOnTouchListener( this );    }    public void draw(){        Canvas canvas = getHolder().lockCanvas();        canvas.drawColor( Color.WHITE );        canvas.drawPath( path, p );        getHolder().unlockCanvasAndPost( canvas );    }    public void clear(){        path.reset();        draw();    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        draw();    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {    }    @Override    public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()){            case MotionEvent.ACTION_DOWN:                path.moveTo( event.getX(),event.getY() );                draw();             break;            case MotionEvent.ACTION_MOVE:                path.lineTo( event.getX(),event.getY() );                draw();             break;        }        return true;    }}

更多相关文章

  1. 第一行代码Android第三课
  2. Android 开源源代码收集(不断更新中...)
  3. Android顶部工具栏和底部工具栏的简单实现代码
  4. Android 系统(194)---Android实践 -- 设置系统日期时间和时区
  5. Android的多媒体框架Opencore代码阅读
  6. Android应用程序启动过程源代码分析
  7. Android中创建对话框(确定取消对话框、单选对话框、多选对话框)

随机推荐

  1. Android 拍照及相册选图的那些坑
  2. android 设置bitmap 设置图片的大小
  3. android SQLiteDatebase 实践
  4. Ubuntu上安装和使用Android Studio
  5. android音频、视频、拍照基础操作
  6. Android SDK与ADT不匹配的问题 This Andr
  7. Android(安卓)UI ListView讲解
  8. Android下读取logcat的信息
  9. 搭建 android 代码镜像服务
  10. Android获取所在地城市名2