Android(安卓)TextClock的坑(系统12小时强制转换成24小时格式)
16lz
2021-01-26
起初自己为了做一个时间显示,是采用开线程的方式来实现的,但是总感觉这样,开着线程,延迟一秒钟去刷新控件,总感觉对内存不友好,找了一下资料发现了一个官方的控件,可以帮我们实现,当时在12小时和24小时格式的问题上,转换我这边还是有个问题,我这边不管系统是什么小时的格式,统一按照24小时的来,网上一些的资料都没有用,于是用了自己的方式来解决了
注意该控件最低api17,才支持
android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { applicationId "com.example.test_01" minSdkVersion 17 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }
使用例子:
<?xml version="1.0" encoding="utf-8"?>
这样不管系统的设置是12小时还是24小时,都可以强制转换成24小时的格式了,代码逻辑判断都是不用写了。
记录一下自己刚开始,用线程每秒刷新的方式处理方式,下面是核心部分代码:
private boolean isTime = true;//时间 线程刷新方式 new Thread(new Runnable() { @Override public void run() { while (isTime == true) { try { Thread.sleep(1000); init_handerNum(1); // Log.i(TAG, "run: 时间啊"); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); @Override protected void onDestroy() { super.onDestroy(); isTime = false; handler.removeCallbacksAndMessages(null); } private void init_handerNum(int num) { Message message = Message.obtain(); message.what = num; handler.sendMessage(message); }
private SimpleDateFormat f1, f2, f3; private String year, timeE, times; private Date now; private void init_time() { now = new Date(); f1 = new SimpleDateFormat("yyyy 年 MM 月 dd 日 "); f2 = new SimpleDateFormat("EEEE"); f3 = new SimpleDateFormat(" HH:mm:ss"); year = f1.format(now); timeE = f2.format(now); times = f3.format(now); } private class HandlerMain extends Handler { private WeakReference weakReference; public HandlerMain(MainActivity activity) { weakReference = new WeakReference<>(activity); } @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); MainActivity activity = weakReference.get(); if (activity != null) { switch (msg.what) { case 1: //时间刷新 init_time(); tvYear.setText(year); //显示年月日textview控件 tvTimeE.setText(timeE); //显示星期几textview控件 tvTimes.setText(times); //显示时分秒textview控件 break; } } } }
如果你还有其他的需求也可以参考一下,其他大佬的文章:
https://blog.csdn.net/you943047219/article/details/80826855?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.nonecase
https://blog.csdn.net/qq_34207101/article/details/91369418
更多相关文章
- 滑轮控件研究二、GestureDetector的深入研究
- Android在界面中重复点击导致多次跳转或打开多个相同界面的问题
- android SoftKeypad 软键盘的问题
- android中角标的实现
- Android快速自定义控件+实战演示(三)完整键盘和组合回调!
- 关于Volley的问题,GET方式下输入有空格的参数居然解析错误,导致不
- Android输入控件详解
- Android(安卓)实现形态各异的双向侧滑菜单 自定义控件来袭
- 应用开发笔记 2011年10月28日 Android(安卓)使用动画效果后的控