Android软件开发之 自定义控件

标签: android 软件开发 定义 | 发表时间:2012-03-10 19:33 | 作者:jackhenry
出处:http://blog.csdn.net

Android软件开发之 自定义控件

虽然Android系统提供了各种各样的控件供我们开发使用,但在实际的开发中,系统提供的控件有时候不能满足我们的需求,这时我们就需要自定义一个控件。

下面的例子就来自定义一个简单的Button:

首先是布局,image_btn.xml:

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

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="horizontal"

  android:gravity="center_horizontal"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:background="@drawable/btn_bg">

  <ImageView 

   android:id="@+id/imageView0"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:layout_gravity="center_vertical"

   android:src="@drawable/image0"

   />

  <TextView 

   android:id="@+id/textView0"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:layout_gravity="center_vertical"

   android:textSize="20sp"

   android:textColor="#000"

   android:text="@string/ic_img_up"

   />

    

</LinearLayout>

然后实现一个新的控件,ImageBtn.java:

public class ImageBtn extends LinearLayout {

private ImageView imageView;

private TextView textView;

public ImageBtn(Context context, AttributeSet attrs) {

super(context, attrs);

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

inflater.inflate(R.layout.image_btn, this);

//实例化控件对象

imageView = (ImageView) findViewById(R.id.imageView0);

textView = (TextView) findViewById(R.id.textView0);

}

public ImageBtn(Context context) {

super(context);

}

/**

 * 设置图片资源

 * @param resId

 */

public void setImageResource(int resId) {

imageView.setImageResource(resId);

}

/**

 * 设置要显示的文字

 * @param text

 */

public void setText(int strId) {

textView.setText(strId);

}

}

然后在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"

    >

<jack.userdefined.ImageBtn

android:id="@+id/imgBtn0"

android:layout_width="wrap_content" 

    android:layout_height="wrap_content" 

    />

    

</LinearLayout>

最后,在MainActivity中进行测试,我们实现点击该控件,该控件中的图片进行切换和text同时也相应的改变。

public class MainActivity extends Activity implements OnClickListener {

//声明一个ImageBtn对象

private ImageBtn imgBtn0;

//定义一个数组用于存放图片资源

private int[] resId = {R.drawable.image0, R.drawable.image1, R.drawable.image2, R.drawable.image3};

//定义一个数组用于存放字符资源

private int[] strId = {R.string.ic_img_up, R.string.ic_img_right, R.string.ic_img_down, R.string.ic_img_left};

//资源索引标志

private int Num = 0;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //实例化ImageBtn对象

        imgBtn0 = (ImageBtn) findViewById(R.id.imgBtn0);

        imgBtn0.setOnClickListener(this);

        

    }

@Override

public void onClick(View v) {

if (Num > resId.length - 1) {

Num = 0;

}

imgBtn0.setImageResource(resId[Num]);

imgBtn0.setText(strId[Num]);

Num++;

}

}

Run app之后,如下图所示:

Download source: http://115.com/file/be6whdbx

作者:jackhenry 发表于2012-3-10 19:33:33 原文链接
阅读:2 评论:0 查看评论

相关 [android 软件开发 定义] 推荐:

Android软件开发之 自定义控件

- - CSDN博客推荐文章
Android软件开发之 自定义控件. 虽然Android系统提供了各种各样的控件供我们开发使用,但在实际的开发中,系统提供的控件有时候不能满足我们的需求,这时我们就需要自定义一个控件. 下面的例子就来自定义一个简单的Button:. 首先是布局,image_btn.xml:. 然后实现一个新的控件,ImageBtn.java:.

Android自定义Lint实践

- - 美团点评技术团队
Android Lint是Google提供给Android开发者的静态代码检查工具. 使用Lint对Android工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正. 为保证代码质量,美团在开发流程中加入了代码检查,如果代码检测到问题,则无法合并到正式分支中,这些检查中就包括Lint.

App Guy:我准备好了!你们呢?;Android 软件开发者:咦?谁叫我?!

- 约翰 - Engadget 中国版
继释出 API Mapping 工具给 iOS 软件开发者后,微软再度展现诚意,让 API Mapping 工具也支持 Android 软件,邀请 Android 软件开发者将手上的软件『贴上』Marketplace,这次同样请到 "App Guy"(音近『阿婆该』,苹果哀哀叫之意,小编承认这是脑补的后遗症)这位狠角色,他在上回也出面帮助 iOS 软件开发者这项转换平台的艰巨任务.

NoScript for Firefox for Android 发布 移动页面也可自定义策略

- bill - cnBeta.COM
著名的Firefox插件NoScipt今天发布了Android版本,它可以适用于移动版的Firefox,它和桌面版的功能一样,可以在客户端拦截各种网页元素,就像是一个Web应用的防火墙,这样可以减少点击劫持,并为每一个特定站点设定策略,有需要用到的朋友现在可以可以下载. 未来该版本还可以实现和桌面版本的策略共享等特性.

深入解析Android的自定义布局

- - CSDN博客移动开发推荐文章
原文链接: http://greenrobot.me/devpost/android-custom-layout/. 这篇文章是前Firefox Android工程师(现在 跳槽去Facebook了)   Lucas Rocha所写,文中对Android中常用的四种自定义布局方案进行了很好地分析,并结合这四种Android自定义布局方案所写的示例项目讲解了它们各自的优劣以及四种方案之间的比较.

Android自定义GridView之实现一个图片加多个文本框

- - CSDN博客推荐文章
GridView的使用是很简单的,API Demo中有例子,但是要实现复杂的GridView,就需要自定义了. 今天我们要实现如下的效果:. 先说它的布局,它是由gridview和grid_item两部分组成. 接下来我们要新写一个继承自BaseAdapter类的Adapter类,在这里做grid item的适配.

android文件下载及自定义通知显示下载进度

- - CSDN博客推荐文章
这几天在实现一个APK版本更新的功能,发现涉及的东西比较繁杂. 本着一劳永逸的想法将相关的内容写成了相对比较独立的类供以后参考同时也与大家共享,欢迎大家批评指正. (1)文件下载:设计自定义类,只需传入一个Handler、下载地址URLStr及保存路径及可实现下载的功能. handler主要用于线程间通信,跟新通知中的进度条.

软件开发的核心

- - 博客园_知识库
  「我们一直这样做开发,时间做久了,便忘了当初的本意.   有关软件系统开发,我们谈些什么.   我们谈过程,编码规范、开发流程、同行评审、结对编程、持续集成,从瀑布到敏捷再到极限编程.   我们谈架构,企业级、J2EE、容器化、SOA(面向服务架构)、Microservices(微服务化).   我们谈规模,大容量、高并发、大数据.

谷奥: Google Maps 5.3 for Android 发布,支持位置历史、在家签到与自定义评价

- Dolphin - 谷奥聚合——谷奥主站+谷安 aggregator
Google Maps 5.3 for Android 今日发布,这个新版本可以查看 Google 位置 Dashboard 历史控制台,在“家”签到以及评价地点时添加自己的观点. 如果您为 Google Latitude 启用了位置历史,就可以在计算机上使用个人控制台视觉化位置历史中有趣的趋势. 现在,您也可以在手机上轻按 Latitude 个人资料中的“查看位置历史”查看控制台.

软件开发的“三重门”

- - 酷壳 - CoolShell.cn
自从上次写了“ 程序员技术练级攻略” 以来,就觉得似乎还有很多东西没有谈到,但当时没有继续思考了. 而春节前有人问我,是做底层技术,还是做业务. 这问题让我思考了很多,不由自主地回顾了一 下我这十多年的软件开发经历,并顺着整理分类了一下自己解决过的若干问题,还发散想了很多,经过了一个春节假期的发酵,产生了下面这篇文章.