自定义控件——自定义视图属性

一、新建工程

二、创建类并继承View

package com.example.l01myrect;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by 袁磊 on 2017/2/6.
 */
public class MyRect extends 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, 0xffff0000);//红色
        setBackgroundColor(color);

        ta.recycle();//TypedArray调用结束后务必调用recycle()方法,否则这次的设定会对下次的使用造成影响
    }
}

MyRect

三、values文件夹中自定义属性attrs

<?xml version="1.0" encoding="utf-8"?>
<resources>  <!--根标签-->
    <declare-styleable name="MyView">  <!--定义若干个declare-styleable,name定义了变量的名称-->
        <attr name="rect_color" format="color" /> <!--自定义多个属性,name为名称,format为属性类型-->
    </declare-styleable>
</resources>

attrs

四、activity_main中使用自定义控件类MyRect

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yl="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.example.l01myrect.MyRect
        android:layout_width="100dp"
        android:layout_height="100dp"
        yl:rect_color="#ff0000ff" /> <!--蓝色-->
</LinearLayout>

activity_main

运行效果

时间: 2024-10-11 14:26:32

自定义控件——自定义视图属性的相关文章

android自定义视图属性(atts.xml,TypedArray)学习

是一个用于存放恢复obtainStyledAttributes(AttributeSet, int[], int, int)或 obtainAttributes(AttributeSet, int[])  值的一个数组容器,当操作完成以后,一定要调用recycle()方法.用于检索的索引值在这个结构对应的位置给obtainStyledAttributes属性. 使用这个类的时候,先要在valuse文件夹下创建:atts.xml文件: [html] view plaincopy <?xml ver

1. 自定义视图属性

res/values/attrs.xml   自定义属性值 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <!-- 颜色属性值 --> 4 <declare-styleable name="MyView"> 5 <attr name="rect_color" format="color"

Android开发之自定义视图属性

Android框架中,所有自定义的view类都继承自View,也可以继承Button等view的子类 为了允许ADT能够与view交互,必须提供一个能够获取Context和作为属性的AttributeSet对象的构造函数.这个构造函数允许布局编辑器建立和编辑view的实例. 1 public class MyRect extends View { 2 3 public MyRect(Context context) { 4 super(context); 5 // TODO Auto-gener

自定义视图一:扩展现有的视图,添加新的XML属性

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承实现view group以及如何给其子视图添加动画.第一篇主要讲述如何扩展和使用现有的视图,以及如何添加特有的XML属性. 特定的任务使用特定的视图 Android提供的view都是比较通用的,哪里都可以用.但是在开发应用的过程中需要对这些通用的view加以修改.很多时候这些代码都添加到了Activ

【android自定义控件】自定义View属性

1.自定义View的属性 2.在View的构造方法中获得我们自定义的属性 3.重写onMesure 4.重写onDraw 3这个步骤不是必须,当然了大部分情况下还是需要重写的. 1.自定义View的属性,首先在res/values/  下建立一个attrs.xml , 在里面定义我们的属性和声明我们的整个样式. <?xml version="1.0" encoding="utf-8"?> <resources> <attr name=&

自定义控件三部曲视图篇(三)——瀑布流容器WaterFallLayout实现

前言:只要在前行,梦想就不再遥远 系列文章: Android自定义控件三部曲文章索引:http://blog.csdn.net/harvic880925/article/details/50995268 前面两节讲解了有关ViewGroup的onMeasure.onLayout的知识,这节我们深入性地探讨一下,如何实现经常见到的瀑布流容器,本节将实现的效果图如下: 从效果图中可以看出这里要完成的几个功能: 1.图片随机添加 2.在添加图片时,总是将新图片插入到当前最短的列中 3.每个Item后,

自定义视图(组合控件)

前言 Android自定义控件主要分为两种,一种是通过继承View来实现自定义控件,另一种是通过组合已有到控件来实现自定义控件,上篇文章自定义视图(继承View)我们介绍了下继承View到方式,这篇文章简单介绍下组合控件来实现自定义控件. 有些情况我们需要通过组合已有到控件来实现特定功能到控件组建,比如一个应用到题头,大概样式如下 Java代码 通过组合控件来实现自定义控件到方式,是通过继承一个ViewGrou对象来实现,比如LinearLayout, FrameLayout, Relative

IOS中在自定义控件(非视图控制器)的视图跳转中 代理方法与代码块的比较

//代码块与代替代理的设计方法 我就以在自定义视图中(非视图控制器,不能实现视图控制功能),通过代理和代码块两种方法分别实现视图的跳转,进行对比 首先自定义了一个视图,上面有一个已经注册了得BUtton点击监控事件方法-(void)event{};视图的跳转就在这个方法中实现(注意:这个button不在视图控制器里面,就算导了相关头文件,也不能跳转,所以只能通过代理方法,或者代码块等,在这个button(在自定义控件空,非视图控制器)方法中调用相关方法,在视图控制器中去实现) 代理实现方法: 在

Android自定义视图与自定义属性

这是Android UI Fundamentals里的内容 创建自定义视图 创建自定义UI组件首先要继承一个视图类. 首先创建一个简单的自定义视图, 展示一条十字线. 需要做的第一件事是创建一个继承自View的CrossView类. public CrossView(Context context, AttributeSet attrs) { super(context, attrs); } 该构造函数的第二个参数是用来传递XML参数的, 等会儿会讲到. 接下来我们要重写两个基础方法: onMe