鍍金池/ 教程/ Android/ 使用活動代碼自定義Android組件
Android 應用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢
Android AutoCompleteTextView(自動完成)實例
Android 資源組織和訪問
Android ListView
Android GridView
Android數(shù)據(jù)備份
Android撥打電話
Android發(fā)送短信/SMS
Android ProgressDialog
SimpleCursorAdapter
Android發(fā)送電子郵件
Android Activity
Android TextView
Android事件處理
Android TableLayout
Android加載Spinner
Android內(nèi)容提供者
Android自定義字體
Android Service
Android CheckBox
Android Intent過濾器
Android LinearLayout
Android登錄實例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動畫)實例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應用
Android Alertdialog(警告對話框)
Android圖片效果
Android內(nèi)部存儲
Android基于位置服務
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍牙)實例
Android RelativeLayout
Android最佳實踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

使用活動代碼自定義Android組件

下面的示例演示如何定義一個簡單的Android定制組件,然后如何在里面活動代碼實例化,而無需使用布局文件。

步驟 描述
1 使用Android Studio創(chuàng)建Android應用程序,并將它命名為:DateViewDemounder
2 創(chuàng)建 src/DateView.java 文件,并添加自定義組件代碼。這將擴展TextView,將有更多的功能,顯示當前的日期
3 修改 src/MainActivity.java 文件,并添加代碼來創(chuàng)建DateView實例和usesetContentView()方法來設(shè)置它的布局
4 運行該應用程序啟動Android模擬器并驗證應用程序所做的修改結(jié)果

以下將是新的文件 src/com.yiibai.dateviewdemo/DateView.java 的內(nèi)容,這里添加了額外的功能,以顯示當前日期:

package com.yiibai.dateviewdemo;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class DateView extends TextView {
   public DateView(Context context) {
      super(context);
      setDate();
   }

   public DateView(Context context, AttributeSet attrs) {
      super(context, attrs);
      setDate();
   }

   public DateView(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
      setDate();
   }

   private void setDate() {
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      String today = dateFormat.format(Calendar.getInstance().getTime());
      setText(today);  // self = DateView is a subclass of TextView
   }

}

下面是修改后的主活動文件 src/com.yiibai.dateviewdemo/MainActivity.java 的內(nèi)容。該文件可以包含每一個生命周期的基本方法。 

package com.yiibai.dateviewdemo;

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.activity_main);
        
        //-- Create DateView instance and set it in layout.
        DateView dateView = new DateView(this);
        setContentView(dateView);
    }

    @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;
    }
    
}

下面將 res/layout/activity_main.xml 文件的內(nèi)容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

</RelativeLayout>

上一篇:Android教程下一篇:Android內(nèi)容提供者