自定义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>

更多相关文章

  1. Android(安卓)关于WebView的相关属性
  2. android webview 使用
  3. ToolBar的使用
  4. Android欢迎界面实现
  5. android.inputmethodservice.KeyboardView 自定义键盘 字体大小
  6. Android(安卓)JNI学习笔记——so文件动态加载
  7. Notes on the implementation of encryption in Android(安卓)3.
  8. Android(安卓)获取经纬度。2018年写
  9. Android中的classLoader

随机推荐

  1. flex布局:flex容器中的四个属性的功能,参数
  2. 红帽认证工程师体系是怎样的?
  3. 美团面试官:说说你对MySQL中InnoDB的了解!
  4. 透过 3.0 Preview 看 Dubbo 的云原生变革
  5. 云服务器是干什么用的?摩杜云带你去了解!
  6. Python编程最常见的错误有哪些?这五点很
  7. Kibana 之 使用指引
  8. Go Mysql Driver 集成 Seata-Golang 解决
  9. OpenKruise 如何实现 K8s 社区首个规模化
  10. Python设计模式六大原则!