Android自定义控件及自定义属性

自定义控件

创建自定义控件

自定义一个类,继承View

继承View还是哪个类,取决于你要实现一个什么样的控件

如果你要实现的是一个线性布局的组合控件,就可以继承LinearLayout

如果你要实现的是一个布局复杂的组合控件,就可以继承RelativeLayout

具体根据实际情况

这里我要实现一个Android端的显示验证码的控件,我只继承View

package ……;import ……/*** Created by kongqw on 2015/10/23.*/
public class CheckView extends View {……public CheckView(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;……}public void onDraw(Canvas canvas) {// 画界面……}……
}

类似的,如果你是继承了RelativeLayout,大概可以这样实现

package ……;import ……/*** Created by kongqw on 2015/7/10.*/
public class KTop extends RelativeLayout {private …………public KTop(Context context) {super(context);initView();}public KTop(Context context, AttributeSet attrs) {super(context, attrs);initView();}public KTop(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView();}/*** 初始化界面*/private void initView() {view = View.inflate(getContext(), R.layout.k_top, this);// 控件背景mTitleView = (RelativeLayout) view.findViewById(R.id.title_view);// 只举一个例子,这里可以获取的布局里的控件……}// 做一些其他操作的处理,例如控件的点击事件处理等……}

使用自定义控件

在布局文件中的使用

<kong.qingwei.demo.kqwcheckviewdemo.CheckViewandroid:id="@+id/checkView"android:layout_width="wrap_content"android:layout_height="50dp" />

自定义属性

定义自定义属性

在values文件夹下创建attrs.xml文件
name是自定义属性的名称
format是自定义属性的类型,有如下类型,就不一一介绍了

代码

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="CheckView"><!-- 随机点数 --><attr name="point_num" format="integer" /><!-- 随机线数 --><attr name="point_line" format="integer" /><!-- 验证码长度 --><attr name="text_length" format="integer" /><!-- 验证码字体大小--><attr name="text_size" format="integer" /><!-- 验证码字体颜色 --><attr name="text_color" format="color" /></declare-styleable>
</resources>

使用自定义属性

在使用自定义控件的xml文件里引入命名空间

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

自定义属性的使用

kongqw:point_num="5"

示例

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:kongqw="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">……<kong.qingwei.demo.kqwcheckviewdemo.CheckViewandroid:id="@+id/checkView"android:layout_width="wrap_content"android:layout_height="50dp"kongqw:point_num="5" />……</LinearLayout>

效果图

Android自定义控件及自定义属性相关推荐

  1. Android开发技巧——自定义控件之自定义属性

    Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个 ...

  2. Android 自定义控件打造史上最简单的侧滑菜单

    侧滑菜单在很多应用中都会见到,最近QQ5.0侧滑还玩了点花样~~对于侧滑菜单,一般大家都会自定义ViewGroup,然后隐藏菜单栏,当手指滑动时,通过Scroller或者不断的改变leftMargin ...

  3. 【自定义控件】自定义属性

    做 Android布局是件很享受的事,这得益于他良好的xml方式.使用xml可以快速 有效的为软件定义界面.可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了.那么如何才能做到像 ...

  4. android 自定义控件

    自定义一般分三种情况 1. 自定义布局 2. 自定义控件 3.直接继承View 下面来着eoe例子,实现自定义控件 1. 自定义属性 res/values/attrs.xml 自定义属性 <?x ...

  5. Android自定义控件之流式布局

    效果图: 一.首先创建我 们的自定义流式布局 public class FlowLayoutView extends ViewGroup {public FlowLayoutView(Context ...

  6. Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示

    功能: 自定义 ImageView 设置显示图片,如果图片的宽与高小于控件的宽与高,就将图片设置显示到控件的中央, 如果图片的宽与高有一项大于控件的宽与高,那么就将图片进行缩放显示,两者者是显示在控件 ...

  7. android自定义属性dimen,Android获取非自定义属性值

    以Spinner的entries属性为例 创建values/attrs.xml文件,添加下述代码 获取属性 public AutoSpinner(Context context, AttributeS ...

  8. Android自定义控件--仿安全卫士中的一键加速【圆形进度条】

    最近看到a10615的:Android自定义控件–仿安全卫士中的一键加速.自己零零散散学习了几个月,也想尝试下.几天的功夫总算把它弄出来,虽然没有泓洋的强大,但是该有的自定义属性也有了,先来看看效果图 ...

  9. android 自定义控件gif压缩包,android显示gif图片(自定义控件以及属性)

    由于android所带的控件里面没有能够显示gif图片的 今天闲来无事,就来网上查查资料,打算搞一个能显示gif图片的自定义控件 网上的解决方法大致有三种 第一:先将gif图片分拆为N帧(由美工/软件 ...

最新文章

  1. vue实例没有挂载到html上,vue 源码学习 - 实例挂载
  2. 使用DRS的维护模式实现单个VM的测试
  3. POI Excel 如何插入新的行?
  4. nginx php-fpm调优
  5. 使用DeflateStream压缩与解压
  6. 使用snmp4j实现Snmp功能(二)
  7. ABAP webdynpro的view navigation和WebUI的view navigation
  8. 不可不知的Oracle常用技巧
  9. html搞笑注释,9个最有趣的代码注释
  10. 使用inspector功能查看和管理契约
  11. Spring Security xsd 异常
  12. 不要相信程序员在加班时间写的代码
  13. JetBrains全系列破解
  14. DRM系列(3)之DRM_IOCTL_MODE_MAP_DUMB
  15. SkeyeVSS综合安防监控视频云服务使用说明文档
  16. EXCEL公式-文本型数据转换为数值型数据
  17. Unity:DOTween来回运行或者缩放等LoopType.Yoyo
  18. 用canvas画转动的阴阳鱼
  19. 百钱买百鸡问题java_Java版百钱买百鸡
  20. INTEL G41时序

热门文章

  1. Windows Server 2008搭建单域环境
  2. 从一个小场景学会使用 apply方法
  3. 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
  4. 疯狂连连看之开发界面布局
  5. 手机当中的wifi功能是什么意思?
  6. 6-2 是否二叉搜索树 (25 分)
  7. 大数据平台基本功能有哪些
  8. 企业可视化大屏如何搭建
  9. 大数据分析需注意什么问题
  10. java有哪些部分要学_java需要学习哪些知识