Android RoboGuice2 使用指南(3): Inject 自定义View
2012-07-09 08:23
429 查看
前面介绍了Android RoboGuice2 的HelloWorld示例,并介绍了从RoboGuice 1.1 升级到RoboGuice2.0 的主要注意事项。其它的基本概念和RoboGuice1.1基本一样,可以参见
Android RoboGuice 使用指南(3):Bindings 概述
Android RoboGuice 使用指南(4):Linked Bindings
Android RoboGuice 使用指南(5):Binding Annotations
Android RoboGuice 使用指南(6):Instance Bindings
Android RoboGuice 使用指南(7):@Provides Methods
Android RoboGuice 使用指南(8):Provider Bindings
Android RoboGuice 使用指南(9):Untargetted Bindings
Android RoboGuice 使用指南(10):Just-in-time Bindings
Android RoboGuice 使用指南(11):Scopes
Android RoboGuice 使用指南(12):如何绑定generic类型
Android RoboGuice 使用指南(13):RoboGuice 功能描述
Android RoboGuice 使用指南(14):Inject View
Android RoboGuice 使用指南(15):Inject Context
Android RoboGuice 使用指南(16):Standard Injection
Android RoboGuice 使用指南(17):Inject Extra
Android RoboGuice 使用指南(18):Inject Resources
Android RoboGuice 使用指南(19):发送接收Events
本例介绍如何Inject自定义的View,Inject自定义的View和Android自带的View(如TextView,Button)方法一样。
本例使用一个自定义的TextView,每隔1秒显示当前时间。前定义如下:
修改main.xml
定义该TimeTextView的id为txtTime。
这样可以在对应的Activity中使用InjectView 来给对应的txtTime 自动赋值(注入)。
由于GuiceDemo是从RoboActivity派生的,在onCreate 第一行的super.onCreate() 完成注入功能。如果你对RoboGuice1.1 熟悉的话,在使用注入的变量前如txtTime,需要执行setContentView。
在RoboGuice2.0中你可以使用同样的方法,2.0还提供了一个简单的标注方法@ContentView ,如本例,为Activity设置ContentView。
本例下载
。
从本例可以看出,和RoboGuice1.1 相比,RoboGuice2.0在使用上要简洁的多。本例只需从RoboActivity派生,不在需要定义Application等
Android RoboGuice 使用指南(3):Bindings 概述
Android RoboGuice 使用指南(4):Linked Bindings
Android RoboGuice 使用指南(5):Binding Annotations
Android RoboGuice 使用指南(6):Instance Bindings
Android RoboGuice 使用指南(7):@Provides Methods
Android RoboGuice 使用指南(8):Provider Bindings
Android RoboGuice 使用指南(9):Untargetted Bindings
Android RoboGuice 使用指南(10):Just-in-time Bindings
Android RoboGuice 使用指南(11):Scopes
Android RoboGuice 使用指南(12):如何绑定generic类型
Android RoboGuice 使用指南(13):RoboGuice 功能描述
Android RoboGuice 使用指南(14):Inject View
Android RoboGuice 使用指南(15):Inject Context
Android RoboGuice 使用指南(16):Standard Injection
Android RoboGuice 使用指南(17):Inject Extra
Android RoboGuice 使用指南(18):Inject Resources
Android RoboGuice 使用指南(19):发送接收Events
本例介绍如何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。
本例下载
。
从本例可以看出,和RoboGuice1.1 相比,RoboGuice2.0在使用上要简洁的多。本例只需从RoboActivity派生,不在需要定义Application等
相关文章推荐
- Android中的自定义view和自定义属性TypedArray的使用
- Android使用自定义View实现饼状图的实例代码
- 【Android 自定义View】封装好的轮播图组件,可直接使用(附demo)
- Android 自定义View 使用问题
- Android中使用自定义selector来实现view的点击效果以及view的显示样式
- android开源系列:CircleImageView自定义圆形控件的使用
- Android自定义View中MeasureSpec的使用
- Android 使用自定义View画圆
- Android webview 使用自定义自体
- Android 自定义View及其在布局文件中的使用示例
- Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器
- Android使用自定义View时:Error inflating class错误的原因。
- Android中自定义View的MeasureSpec使用
- android:自定义View的使用(二)
- 【android 开发知识积累】——属性(Attribute)资源的使用和自定义View组件
- Android进阶学习-使用Canvas自定义简单TextView(1)
- Android中如何使用自定义view 自定义控件属性及动态自定义控件
- android 自定义webview 如何使用gps 如何用模拟的gps
- Android 在ListView中使用自定义的ViewGroup来取代ViewHolde
- Android开发(二)——自定义圆形控件的使用CircleImageView