Android RoboGuice2 使用指南(3): Inject 自定义View
来源:互联网 发布:外围服务 知乎 编辑:程序博客网 时间:2024/04/29 00:48
前面介绍了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秒显示当前时间。前定义如下:
//--------------------------------- 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 RoboGuice2 使用指南(3): Inject 自定义View
- Android RoboGuice2 使用指南(1): 概述
- Android RoboGuice 使用指南(14):Inject View
- Android RoboGuice2 使用指南(4): 综合示例Astroboy
- Android RoboGuice2 使用指南(2): 第一个例子Hello World
- Android RoboGuice 使用指南(15):Inject Context
- Android RoboGuice 使用指南(17):Inject Extra
- Android RoboGuice 使用指南(18):Inject Resources
- Android View---自定义View
- Android View---自定义View
- android(3)自定义View
- Android自定义View(3)
- android 自定义 3D View
- Android 自定义 View(3)
- Android 自定义View 之 自定义View属性
- 【自定义View系列】android自定义View概述
- android学习笔记3:自定义view
- android-进阶(3)-自定义view(1)
- Windows Mobile引路蜂地图开发示例:二维图形库
- C#不让主线程UI挂起
- 类型转化
- 双循环链表的构建,插入,删除,输出
- 弹出窗口的js
- Android RoboGuice2 使用指南(3): Inject 自定义View
- 用doxygen生成面向对象语言的类文档
- Android ApiDemos示例解析(55):Graphics->BitmapMesh
- 无线网络-LTE (01) LTE Overview
- java读写文件大全
- 蒙迪欧致胜2.0T买油回来,怎么把汽油加进去?没有口啊?
- Java中super的几种用法并与this的区别
- 命名风格
- UVa 10129 - Play on Words, 欧拉道路