【GT-安卓应用开发之时间显示】

前言:有的时候我们需要在应用界面实时的展示当前时间,最近的项目中刚好也有类似的需求,今天便抽出点时间整理并记录一下,后面会附带demo的地址

        首先,先展示下界面效果:

        

        从效果图中可以清楚的看到展示了当前年月日、周几以及当前的时间,下面先说一下我的设计思路:创建三个TextView分别用于展示日期、周几以及时间,开启一个子线程每隔一秒钟刷新一下。

        下面,记录一下该demo的实现过程

        1、创建布局,创建三个TextView并居中显示

        2、创建一个事件监听OnDateTimeListener,并定义onDateTime方法,用于监听时间变化

public interface OnDateTimelistener {
    void onDateTime();
}

        3、创建DateTimeUtil,在里面定义时间格式化、获取当前时间等相关的方法

        4、创建一个线程,DateTimeThread,每隔一秒发送消息触发时间变化

public class DateTimeThread extends Thread{
    private OnDateTimelistener listener;
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 1:
                    if (listener !=null){
                        listener.onDateTime();
                    }
                    break;
            }
        }
    };
    public DateTimeThread(OnDateTimelistener listener) {
        this.listener = listener;
    }
    @Override
    public void run() {
        super.run();
        do {
            try {
                Thread.sleep(1000);
                Message msg = new Message();
                msg.what = 1;
                mHandler.sendMessage(msg);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } while (true);


    }

        5、在Activity中继承监听事件、开启子线程、实现onDateTime、利用DateTimeUtil更新UI

public class MainActivity extends AppCompatActivity implements OnDateTimelistener{

    private TextView date,time,week;
    private DateTimeUtil dateTimeUtil;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        date = (TextView)findViewById(R.id.date);
        time = (TextView)findViewById(R.id.time);
        week = (TextView)findViewById(R.id.week);
        dateTimeUtil = DateTimeUtil.getInstance();
        new DateTimeThread(this).start();
    }

    @Override
    public void onDateTime() {
        date.setText(dateTimeUtil.getCurrentDate());
        week.setText(dateTimeUtil.getCurrentWeekDay(0));
        time.setText(dateTimeUtil.getCurrentTimeHHMM());
    }
}

        附上项目地址

猜你喜欢

转载自blog.csdn.net/qq_17433217/article/details/83036691
今日推荐