Android实现自定义的 时间日期 控件
16lz
2021-01-23
自定义DigitalClock的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/textViewTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="55sp" android:text="10:50:30" android:layout_gravity="center" android:lines="1" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="center" > <TextView android:id="@+id/textViewWeek" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="星期X" android:lines="1" /> <TextView android:id="@+id/textViewDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="XXXX年XX月X日" android:lines="1" /> </LinearLayout></LinearLayout>
布局空间设置
DigitalClock
package com.javen.digitalclock;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import android.content.Context;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.LayoutInflater;import android.widget.LinearLayout;import android.widget.TextView;public class DigitalClock extends LinearLayout { static SimpleDateFormat sdf_time = new SimpleDateFormat("hh:mm:ss"); static SimpleDateFormat sdf_date = new SimpleDateFormat("yyyy年MM月dd日"); static Calendar cal = Calendar.getInstance(); private TextView textViewTime, textViewDate, textViewWeek;// public DigitalClock(Context context, AttributeSet attrs, int defStyle) {// super(context, attrs, defStyle);// } public DigitalClock(Context context, AttributeSet attrs) { super(context, attrs); // 使用layoutinflater把布局加载到本ViewGroup LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.digitalcolck_layout, this); textViewTime = (TextView) findViewById(R.id.textViewTime); textViewDate = (TextView) findViewById(R.id.textViewDate); textViewWeek = (TextView) findViewById(R.id.textViewWeek); startThread(); } public static String getCurrentTime(Date date) { sdf_time.format(date); return sdf_time.format(date); } public static String getCurrentDate(Date date) { sdf_date.format(date); return sdf_date.format(date); } public static String getCurrentWeekDay(Date dt) { String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; cal.setTime(dt); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } private void startThread() { new Thread(new Runnable() { public void run() { while (true) { handler.sendEmptyMessage(12); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }).start(); } Handler handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 12) { Date date = new Date(); textViewTime.setText(getCurrentTime(date)); textViewDate.setText(getCurrentDate(date)); textViewWeek.setText(getCurrentWeekDay(date)); } } };}
mainActivity
package com.javen.digitalclock;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
布局文件main.xml
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" android:layout_width="match_parent" android:layout_height="match_parent" > <com.javen.digitalclock.DigitalClock android:id="@+id/digitalClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DigitalClock" > </com.javen.digitalclock.DigitalClock></LinearLayout>
更多相关文章
- Android JNI学习笔记——so文件动态加载
- Android局部布局替换实现
- Attribute is missing the Android namespace prefix——android
- [android]布局(容器)简介和使用方法
- Android类加载器源码分析
- android之ListView的item布局问题总结
- Android实现ListView异步加载图片