Android中的自定义视图控件
简介
当现有控件不能满足需求时,就需要自定义控件。
自定义控件属性
自定义控件首先要继承自View,重写两个构造函数。
第一个是代码中使用的:
public MyRect(Context context) {
super(context);
}
另一个是资源解析程序使用的:
public MyRect(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView);
int color = ta.getColor(R.styleable.MyView_rect_color, 0xff00ffff);
setBackgroundColor(color);
ta.recycle();
}
也可以给自定义控件指定属性,创建attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources> <declare-styleable name="MyView">
<attr name="rect_color" format="color"/>
</declare-styleable> </resources>
然后就可以在layout文件中使用了:
<com.wanxiang.www.learncustomview.MyRect
android:id="@+id/myrect"
android:layout_width="100dp"
android:layout_height="100dp"
jkxy:rect_color="#FF000FFF"/>
自定义控件皮肤
可以给button等控件通过background属性设置背景,并根据控件的状态做出改变。定义background为一个xml:
<Button
android:text="Button"
android:background="@drawable/button_skin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button"/>
定义这个xml文件内容为:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/btn_normal"></item>
<item android:state_pressed="true" android:drawable="@drawable/btn_pressed"></item>
</selector>
即可以实现控件背景根据状态做出改变。
利用绘图API自定义视图
覆盖draw函数:
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
canvas.drawRect(0,0,500,500,paint); }
private void initproperties() {
paint = new Paint();
paint.setColor(Color.RED);
}
Android中的自定义视图控件的更多相关文章
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- android中一个评分的控件
RatingBar android中一个评分的控件 如何使用 Android Studio下: dependencies { compile 'com.hedgehog.ratingbar:app:1 ...
- Android 手机卫士--自定义组合控件构件布局结构
由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址. ...
- Android开发之自定义组合控件
自定义组合控件的步骤1.自定义一个View,继承ViewGroup,比如RelativeLayout2.编写组合控件的布局文件,在自定义的view中加载(使用View.inflate())3.自定义属 ...
- Android自定义控件之自定义组合控件(三)
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- android自定义控件(五) 自定义组合控件
转自http://www.cnblogs.com/hdjjun/archive/2011/10/12/2209467.html 代码为自己编写 目标:实现textview和ImageButton组合, ...
- Android中使用shape来定义控件
本文章转接于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对s ...
- android中的五大布局(控件的容器,可以放button等控件)
一.android中五大布局相当于是容器,这些容器里可以放控件也可以放另一个容器,子控件和布局都需要制定属性. 1.相对布局:RelativeLayout @1控件默认堆叠排列,需要制定控件的相对位置 ...
- [android] 手机卫士自定义组合控件
设置中心 新建SettingActivity 设置GridView条目的点击事件 调用GridView对象的setOnItemClickListenner()方法,参数:OnItemClickList ...
随机推荐
- Java中的四舍五入
经典案例分析:public class RoundTest { public static void main(String[] args) { System.err.printl ...
- 读《编写可维护的JavaScript》第八章总结
第八章 避免“空比较” 我们在对传进来的参数做处理之前,肯定需要验证一下是否是我们想要的,也就是说大多数情况下,我们需要对比一下它的类型. 作者首先给了一个看起来都感觉不对的代码: var Contr ...
- 30.Nginx集群搭建笔记
源码安装Nginx: tar -zxvf nginx-1.8.0.tar.gz -C /nginx/ #解压Nginx rpm -ivh keepalived-1.2.13-5.el6_ ...
- Query Designer:Variable 变量
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Oracle创建数据库
Oracle创建数据库有三种方式:一.使用DBCA(Database Configuration Assistant 数据库配置助手):二.使用 create database指令:三.在安装数据库软 ...
- Mac上配置Privoxy
此文档适用于走Shadowsocks代理,想利用Privoxy将主机作为代理服务器的用户. 0.安装完Privoxy后,打开终端命令. 1.打开Privoxy的配置文件config: cd /usr/ ...
- M2事后分析报告
设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 这次M2预想的就是解决3个主要问题,1:增加查询自己购买或者发布记录的功能,2:优化 所有的网络连接 ...
- Gevent中信号量的使用
greenlet间同步方法:信号量 1.为什么引入信号量: 2.gevent信号量有哪些: 3.编程实现. 为何引入信号量 信号量是一个允许Greenlet相互合作,限制并发访问或运行的低层次的同步原 ...
- BWT压缩算法(Burrows-Wheeler Transform)
参考: BWT (Burrows–Wheeler_transform)数据转换算法 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_transfor ...
- 滴滴快车,安全把你带到凡科安全知识h5大赛
滴滴出行提出"安全第一.体验第二.效率第三"的可持续发展宗旨.近期,滴滴出行还推广了"安全带"宣传,包括明星夫妻CP安全带姿势和明星后排安全带语音播报等,来提升 ...