Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android RoboGuice2使用指南(3) Inject自定義View

Android RoboGuice2使用指南(3) Inject自定義View

編輯:Android開發教程

前面介紹了Android RoboGuice2 的HelloWorld示例,並介紹了從RoboGuice 1.1 升級到RoboGuice2.0 的主要注意事項。

本例介紹如何Inject自定義 的View,Inject自定義的View和Android自帶的View(如TextView,Button)方 法一樣。

本例使用一個自定義的TextView,每隔1秒顯示當前時間。前定 義如下:

//--------------------------------- PACKAGE --------

----------------------------     
package com.pstreets.guice.customview;          
//--------------------------------- IMPORTS -------------------------

-----------     
import android.content.Context;     
import android.os.Handler;     
import android.util.AttributeSet;     
import android.widget.TextView;     
          
import java.util.Calendar;     
import java.util.Date;     
          
public final class TimeTextView extends TextView {     
          
    public TimeTextView(Context context, AttributeSet attrs) {     
        super(context, attrs);     
        postDelayed(mUpdateView, mRepeatTimePeriod);     
          
    }     
          
    private void setTimeString() {     
        Calendar c = Calendar.getInstance();     
        Date currentTime = c.getTime();     
        String timeString = formatTime(currentTime);     
        setText(timeString);     
    }     
          
    private Handler mHandler = new Handler();     
    /**    
     * one second.    
     */ 
    private int mRepeatTimePeriod = 1000;     
          
    private Runnable mUpdateView = new Runnable() {     
          
        @Override 
        public void run() {     
            TimeTextView.this.setTimeString();     
            // Force toggle again in a second     
            mHandler.postDelayed(this, mRepeatTimePeriod);     
        }     
          
    };     
          
    private String formatTime(Date time) {     
        int hours = time.getHours();     
        int miniutes = time.getMinutes();     
        int seconds = time.getSeconds();     
        String ret = "";     
        if (hours < 10) {     
            ret += "0";     
        }     
        ret += hours + ":";     
        if (miniutes < 10) {     
            ret += "0";     
        }     
        ret += miniutes + ":";     
        if (seconds < 10) {     
            ret += "0";     
        }     
        ret += seconds;     
          
        return ret;     
    }     
          
}

修改main.xml

<?xml version="1.0" encoding="utf-

8"?>     
<LinearLayout 

xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >     
<TextView 
    android:id="@+id/hello" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    />     
<TextView 
          
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1.0" 
          
    />     
<com.pstreets.guice.customview.TimeTextView 
    android:id="@+id/txtTime" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
          
    />     
</LinearLayout>

定義該TimeTextView的id為txtTime。

這樣可以在對應的Activity中使用InjectView 來給對應的txtTime 自動賦值( 注入)。

@ContentView(R.layout.main)     
public class GuiceDemo extends RoboActivity  {     
          
    @InjectView (R.id.txtTime) TimeTextView txtTime;     
          
    @Override 
    public void onCreate(Bundle savedInstanceState) {     
        super.onCreate(savedInstanceState);     
        txtTime.setTextColor(0xFFFF0000);     
          
    }     
          
}

由於GuiceDemo是從RoboActivity派生的,在onCreate 第一行的 super.onCreate() 完成注入功能。如果你對RoboGuice1.1 熟悉的話,在使用注 入的變量前如txtTime,需要執行setContentView。

在RoboGuice2.0中你可以 使用同樣的方法,2.0還提供了一個簡單的標注方法@ContentView ,如本例,為 Activity設置ContentView。

本例下載: http://www.imobilebbs.com/download/android/RoboGuiceDemo1.zip

從本例可以看出,和RoboGuice1.1 相比,RoboGuice2.0在使用上要簡潔的多 。本例只需從RoboActivity派生,不在需要定義Application等

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved