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

前面介绍了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等

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, android studio2.0
, private
, textview
, android自定义view
, android studio 2.0
, 自定义view
, import
, public
, ret
, 注入date
自定义TextView
guice inject、roboguice、roboguice3.0 使用、高德地图自定义指南针、安卓自定义指南针,以便于您获取更多的相关知识。

时间: 2024-08-30 11:10:18

Android RoboGuice2使用指南(3) Inject自定义View的相关文章

Android RoboGuice2使用指南(4) 综合示例Astroboy

前面介绍了RogoGuice2.0的基本用法,其它使用可以参见RoboGuice1.1开发 指南,2.0中提供了对Fragment,View(自定义View中使用注入)的支持,本博 客不再一一介绍. 本例使用的是RoboGuice 开发包中的简单示例 Astroboy(阿童木).涉及的使用RoboGuice2.0 的一些常用方法. 本例 下载(Eclipse项目). 下面对项目中RoboGuice2的使用进行解释.因为 本例没使用自定义绑定,所以无需使用res/values/roboguice.

Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解

Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆形,三角形,多边形等-. 新建一个项目 然后我们创建一个listview,每个图案一个Activity,这样看起来是不是很顺眼 <ListView android:id="@+id/listview" android:layout_width="wrap_content&q

Android绘图机制(一)——自定义View的基础属性和方法

Android绘图机制(一)--自定义View的基础属性和方法 自定义View看起来,确实看起来高深莫测,很多Android开发都不是特别在行这一块,这里面的逻辑以及一些绘画都是有一点难的,说一下我目前的状况吧,结束了一个项目,现在接手一个新的项目,老项目的时候自己确实花了点时间去研究,包括看一些相关的博文和数据,新项目的自定义View更多,现在大致的对自定义View有了一些了解,但是你要说我会呢?我确实还没有掌握,只不过我把 我画的一些柱形图和其他图 的想法写出来,当然,你要让我说原理我肯定说

Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件

Android绘图机制(三)--自定义View的三种实现方式以及实战项目操作 在Android绘图机制(一)--自定义View的基础属性和方法 里说过,实现自定义View有三种方式,分别是 1.对现有的控件进行扩展 2.通过组件来实现新的控件 3.重写View来实现全新的控件 所以本节就来带大家把这个流程走一遍,我们用到的项目还是 Android绘图机制(二)--自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解 本节现在就是做一个真正意义上的自定义View的操

Android嵌套RecyclerView左右滑动替代自定义view

以前的左右滑动效果采用自定义scrollview或者linearlayout来实现,recyclerview可以很好的做这个功能,一般的需求就是要么一个独立的左右滑动效果,要么在一个列表里的中间部分一个左右滑动效果 而列表里面也容易,只是需要解决一点小问题,个人认为值得一提的就是高度问题,一般的人采用固定死的高度,可是在列表里面展示和机型的不同,固定死的话很难保证美观,动态的高度才能解决问题的所在 首先在一个列表控件布局上添加一个recyclerview控件 <android.support.v

Android RoboGuice使用指南(14) Inject View

在例子Android RoboGuice 使用指南(2):第一个例子Hello World 介绍了使用 Roboguice开发的基本步骤: 创建一个RoboApplication 的子类GuiceApplication,GuiceApplication为 Appliacation的子类,修改AndroidManifest.xml,将Application 的name 指向这 个类. 将原先由Activity派生的类基类改为RoboActivity(或其它相关 Activity). 如果有需要的话

Android RoboGuice2使用指南(2) 第一个例子Hello World

本例实现的功能和例子Android RoboGuice 使用指南(2):第一个例子Hello World一样,所不同的是本例使用RoboGuice2.0 来实现. 下载新的RoboGuice库,Roboguice2.0 库有四个库组成,如下图所示: 库可以从 http://code.google.com/p/roboguice/下载. 2. 创建一个新Android项目,比如GuiceDemo,目标平台Android1.5以上. 3. 一般可以在该项目下添加一个libs目录,将两个jar文件拷到

Android RoboGuice使用指南(15) Inject Context

在Android应用程序中,很多地方需要引用到Context对象(Activity, Application,Service等).Roboguice 使得引用Context对象变得非常容易. 可以参见下面例子,这里定义一个不在Activity中的类ContextInfo,需 要引用Context对象: class ContextInfo{ final Context context; @Inject ContextInfo(Context context){ this.context=conte

Android RoboGuice使用指南(17) Inject Extra

使用Intent 启动一个Activity,Service等时,可以通过putExtra 传送数据 ,被触发的Activity,Service可以使用getIntent()的getExtras 取的Extra的 Bundle ,然后再根据Extra的键值(Key)取的对应的参数值. RoboGuice提 供了一个简洁的方法来取得 这些Extra 值,通过@InjectExtra 标记. 本 例使用两个Activity,InjectExtraDemo 用来触发InjectExtraReceiver