Android自己定义控件

今天我们来讲一下 Android中自己定义控件的介绍,在Android中, 我们一般写xml都是用的是单个的控件来完毕的 ,但是。往往在一些项目中。单个控件有时是满足不了的。故此我们能够自己定义控件 ,用自己定义控件的优点是 一方面是更加灵活,还有一方面在大数据量的情况下自己定义控件的效率比写布局文件更高 。其它地方要用此控件 仅仅须要引用控件就能够了。

以下来写一个自己定义控件的和它须要注意的地方:

1.建立一个xml文件 写你想要自己定义的布局

2.在res/values 创建一个attrs.xml 如以下的结构

    <resources>
    <declare-styleable name="myshow">
        <attr name="tvTitle" format="string"/>
        <attr name="titleMinLength" format="integer"/>
        <attr name="tvHint" format="string"/>
        <attr name="title" format="color"/>
        <attr name="tvValue" format="string"/>
    </declare-styleable>
</resources>

具体介绍各个attr标签中的format属性的类型和多指定类型

《1》"reference" //引用 參考某一资源ID

<declare-styleable name = "名称">
                   <attr name = "background" format = "reference" />
            </declare-styleable> 

使用:

  <ImageView
                     android:layout_width = "42dp"
                     android:layout_height = "42dp"
                     android:background = "@drawable/图片ID"
                     />

《2》"color" //颜色

   <declare-styleable name = "名称">
                   <attr name = "textcolor" format = "color" />
            </declare-styleable>

使用:

 <TextView
                     android:layout_width = "42dp"
                     android:layout_height = "42dp"
                     android:textcolor = "#ffffff"
                     />

《3》 "boolean" //布尔值

 <declare-styleable name = "名称">
                   <attr name = "focusable" format = "boolean" />
            </declare-styleable>

使用:

<Button
                     android:layout_width = "42dp"
                     android:layout_height = "42dp"
                     android:focusable = "true"
                     />

《4》"dimension" //尺寸值

  <declare-styleable name = "名称">
                   <attr name = "layout_width" format = "dimension" />
            </declare-styleable>

使用:

  <Button
                     android:layout_width = "42dp"
                     android:layout_height = "42dp"
                     />

《5》"float" //浮点值

 <declare-styleable name = "AlphaAnimation">
                   <attr name = "fromAlpha" format = "float" />
                   <attr name = "toAlpha" format = "float" />
            </declare-styleable>

使用:

  <alpha
                   android:fromAlpha = "1.0"
                   android:toAlpha = "0.5"
                   />

《6》"integer" //整型值

<declare-styleable name = "AnimatedRotateDrawable">
                   <attr name = "visible" />
                   <attr name = "frameDuration" format="integer" />
                   <attr name = "framesCount" format="integer" />
                   <attr name = "pivotX" />
                   <attr name = "pivotY" />
                   <attr name = "drawable" />
            </declare-styleable>

使用:

  <animated-rotate
                   xmlns:android = "http://schemas.android.com/apk/res/android"
                   android:drawable = "@drawable/图片ID"
                   android:pivotX = "50%"
                   android:pivotY = "50%"
                   android:framesCount = "12"
                   android:frameDuration = "100"
                   />

《7》"string" //字符串

<declare-styleable name = "AlphaAnimation">
                   <attr name = "strName format = "string" />
                   <attr name = "strTitle" format = "string" />
            </declare-styleable>

使用:

<com.google.android.maps.MapView
                    android:layout_width = "fill_parent"
                    android:layout_height = "fill_parent"
                    android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO"
                    />

《8》"fraction" //百分数,比方200%

 <declare-styleable name="RotateDrawable">
                   <attr name = "visible" />
                   <attr name = "fromDegrees" format = "float" />
                   <attr name = "toDegrees" format = "float" />
                   <attr name = "pivotX" format = "fraction" />
                   <attr name = "pivotY" format = "fraction" />
                   <attr name = "drawable" />
            </declare-styleable>

使用:

<rotate  xmlns:android = "http://schemas.android.com/apk/res/android"
             android:interpolator = "@anim/动画ID"
                  android:fromDegrees = "0"
             android:toDegrees = "360"
                  android:pivotX = "200%"
                  android:pivotY = "300%"
             android:duration = "5000"
                  android:repeatMode = "restart"
                  android:repeatCount = "infinite"
                   />

《9》  "enum" //枚举值

<declare-styleable name="名称">
                   <attr name="orientation">
                          <enum name="horizontal" value="0" />
                          <enum name="vertical" value="1" />
                   </attr>
            </declare-styleable>

使用:

 <LinearLayout
                    xmlns:android = "http://schemas.android.com/apk/res/android"
                    android:orientation = "vertical\horizontal"
                    android:layout_width = "fill_parent"
                    android:layout_height = "fill_parent"
                   >
    </LinearLayout>

《10》

注意:属性定义时能够指定多个类型值

 <declare-styleable name = "名称">
                   <attr name = "background" format = "reference|color" />
            </declare-styleable>

使用:

  <ImageView
                     android:layout_width = "42dip"
                     android:layout_height = "42dip"
                     android:background = "@drawable/图片ID|#ffffff"
                     />

3.定义一个自己定义的类  继承一个View  继承哪一个View 依据你实际情况来决定

4.引用自己定义的类到你须要的xml中

<1>增加前 必须引用他当前的位置路径 如:

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

<2>引用详细的控件和获取控件中的某个属性

<fx.com.bitmapsolution.MyView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

fx:tvTitle="@string/title3"

fx:titleMinLength="4"

android:layout_marginTop="5dp"

/>

到此  即完毕了一个较简单自己定义控件  复杂点自己定义控件 有时间再写一个 哈哈哈~~

时间: 2024-07-30 10:33:11

Android自己定义控件的相关文章

Android自己定义控件皮肤

Android自己定义控件皮肤 对于Android的自带控件,其外观仅仅能说中规中矩,而我们平时所示Android应用中,一个简单的button都做得十分美观.甚至于很多button在按下时的外观都有一定变化,用户体验十分好. 这当中,就涉及到了Android自己定义控件属性的操作方法,下面操作以实现自己定义button皮肤为例. 1. 我们要自己定义将要实现的外观状态.能够是图片或者是自己定义的xml,这是我们直接自己定义不同状态的颜色xml,在values文件夹下新建colors.xml,代

android 自己定义控件属性(TypedArray以及attrs解释)

近期在捣鼓android 自己定义控件属性,学到了TypedArray以及attrs.在这当中看了一篇大神博客Android 深入理解Android中的自己定义属性.我就更加深入学习力一番.我就沿着这个学习,讲一下流程吧,兴许一篇还有应用. 1.attrs文件编写 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="titleText" for

android 自己定义控件

Android自己定义View实现非常easy 继承View,重写构造函数.onDraw.(onMeasure)等函数. 假设自己定义的View须要有自己定义的属性.须要在values下建立attrs.xml. 在当中定义你的属性. 在使用到自己定义View的xml布局文件里须要增加xmlns:前缀="http://schemas.android.com/apk/res/你的应用所在的包路径". 在使用自己定义属性的时候.使用前缀:属性名,如my:textColor="#FF

Android自己定义控件:进度条的四种实现方式

前三种实现方式代码出自: http://stormzhang.com/openandroid/2013/11/15/android-custom-loading/ (源代码下载)http://download.csdn.net/detail/chaoyu168/9616035 近期一直在学习自己定义控件,搜了很多大牛们Blog里分享的小教程.也上GitHub找了一些类似的控件进行学习.发现读起来都不太好懂,就想写这么一篇东西作为学习笔记吧. 一.控件介绍: 进度条在App中非经常见,比例如以下载

Android自己定义控件而且使其能够在xml中自己定义属性

为什么要自己定义View android开发中自己定义View的优点是显而易见的.比方说以下的这个顶部导航,它被设计出如今应用的每一个界面,但每次的内容却不尽同样.我们不能在每一个layout资源中都配置一组同样的View吧?假设使用<include layou="@layout/xxx"/>标签,尽管攻克了布局文件的重用性,可是相关View的初始化设置还是没可以重用(集中),须要每次都採用view.findViewById(id)来初始化他们. 有了对"可重用性

Android自己定义控件之轮播图控件

背景 近期要做一个轮播图的效果.网上看了几篇文章.基本上都能找到实现,效果还挺不错,可是在写的时候感觉每次都要单独去又一次在Activity里写一堆代码.于是自己封装了一下.这里仅仅是做了下封装成一个控件,不必每次反复写代码了. 效果图 实现分析 轮播图的功能就是实现左右滑动的广告.图片信息展示,那我们就用ViewPager来实现,由于考虑到用户体验,我们还须要在以下加一个指示器来标示滑动到了第几张轮播图.指示器我们能够用一个线性布局来依据要展示的轮播图设置显示的View,我们要做这种一个控件没

Android自己定义控件(状态提示图表)

[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重分享成果] 1 背景 前面分析那么多系统源代码了.也该暂停下来歇息一下,趁昨晚闲着看见一个有意思的需求就操练一下分析源代码后的实例演练--自己定义控件. 这个实例非常适合新手入门自己定义控件.先看下效果图: 横屏模式例如以下: 竖屏模式例如以下: 看见没有.这个控件全然自己定义的,连文字等都是自己定义的,没有不论什么图片等资源,就仅仅是一个小的java文件,这个界面仅仅有一个控件.例如以下咱们看下实现代

Android 自己定义控件开发入门(二)

上一次我们讲了一堆实现自己定义控件的理论基础.列举了View类一些能够重写的方法,我们对这些方法的重写是我们继承View类来派生自己定义控件的关键 我通过一个最简单的样例给大家展示了这一个过程,不管是多么复杂的自己定义控件.思路总是这样子的,可是由于我们只重写了onDraw方法使得大家认为怪怪的.作为一个控件,我们竟然还要为了他的实现为其添加麻烦的监听,这就不能叫做控件了. 以下再给大家介绍一个常常重写的方法法:publicboolean onTouchEvent (MotionEvent ev

Android自己定义控件系列案例【五】

案例效果: 案例分析: 在开发银行相关client的时候或者开发在线支付相关client的时候常常要求用户绑定银行卡,当中银行卡号一般须要空格分隔显示.最常见的就是每4位数以空格进行分隔.以方便用户实时比对自己输入的卡号是否正确.当产品经理或UI设计师把这种需求拿给我们的时候.我们的大脑会立即告诉我们Android中有个EditText控件能够用来输入卡号,但好像没见过能够分隔显示的属性或方法啊.当我们睁大眼睛对着效果图正发呆的时候.突然发现当用户输入内容的时候还出现了清空图标,点击清空图标还能