Android自定义View中attrs.xml的实例详解

Android自定义View中attrs.xml的实例详解

我们在自定义View的时候通常需要先完成attrs.xml文件

在values中定义一个attrs.xml 然后添加相关属性

这一篇先详细介绍一下attrs.xml的属性。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  //自定义属性名,定义公共属性
  <attr name="titleText" format="string"/>
  <attr name="titleTextSize" format="dimension"/>
  <attr name="titleTextColor" format="color"/>
  <attr name="image" format="reference"/>
  <attr name="imageScaleType" >
    <enum name="fillXY" value="0"/>
    <enum name="center" value="1"/>
  </attr>

  //自定义控件的主题样式
  <declare-styleable name="CustomImageView">
    <attr name="titleText" />
    <attr name="titleTextSize" />
    <attr name="titleTextColor" />
    <attr name="image" />
    <attr name="imageScaleType" />
  </declare-styleable>

</resources>

reference:参考某一资源ID。

定义:

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

使用:

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

color:颜色值

定义:

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

使用:

<TextView
          android:layout_width = "42dip"
          android:layout_height = "42dip"
          android:textColor = "#00FF00"
          />

boolean:布尔值

定义:

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

使用:

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

dimension:尺寸值

定义:

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

使用:

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

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.7"
/>

integer:整型值

定义:

<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"
        />

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"
          android:layout_width = "fill_parent"
          android:layout_height = "fill_parent"
          >
</LinearLayout>

flag:位或运算

<declare-styleable name="名称">
          <attr name="windowSoftInputMode">
              <flag name = "stateUnspecified" value = "0" />
              <flag name = "stateUnchanged" value = "1" />
              <flag name = "stateHidden" value = "2" />
              <flag name = "stateAlwaysHidden" value = "3" />
              <flag name = "stateVisible" value = "4" />
              <flag name = "stateAlwaysVisible" value = "5" />
              <flag name = "adjustUnspecified" value = "0x00" />
              <flag name = "adjustResize" value = "0x10" />
              <flag name = "adjustPan" value = "0x20" />
              <flag name = "adjustNothing" value = "0x30" />
          </attr>
lt;/declare-styleable>

使用:

<activity
   android:name = ".StyleAndThemeActivity"
   android:label = "@string/app_name"
   android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">
   <intent-filter>
      <action android:name = "android.intent.action.MAIN" />
      <category android:name = "android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

属性定义时可以指定多种类型值

定义:

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

使用:

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

以上就是关于Android 自定义 View 对attrs.xml的详细介绍,如有疑问请留言或者到本站社区交流,共同 进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android实现RecyclerView下拉刷新效果

    本文为大家分享了Android实现RecyclerView下拉刷新效果的具体代码,供大家参考,具体内容如下 思路 RealPullRefreshView继承了一个LinearLayout 里面放置了一个刷新头布局,将其margin_top设置为负的刷新头的高度的 再添加一个RecyclerView 触摸事件分发机制,当在特定条件下让RealPullRefreshView拦截触摸事件,否则的话,不拦截,让RecyclerView自己去处理触摸事件 在手指下拉时,定义好不同的状态STATE,在不同状

  • Android利用RecyclerView编写聊天界面

    本文实例为大家分享了Android RecyclerView编写聊天界面的具体代码,供大家参考,具体内容如下 1.待会儿会用到RecyclerView,首先在app/build.gradle(注意有两个build.gradle,选择app下的那个)当中添加依赖库,如下: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1'

  • Android自定义view实现拖拽选择按钮

    本文实例为大家分享了Android实现拖拽选择按钮的具体代码,供大家参考,具体内容如下 github地址:https://github.com/xuezj/DragChooseDemo DragChooseDemo 效果图 Attributes属性(布局文件中的自定义属性) 半径.文字大小.按钮个数注意配合使用,以达到最佳效果 方法 使用 布局文件中的使用 <com.xuezj.dragchooselibrary.view.DragChooseView android:id="@+id/m

  • Android控件ListView使用方法详解

    Android控件ListView使用方法介绍,具体如下 一.ListView的简单用法 首先新建一个ListViewTest项目,并让Android Studio自动创建好活动.然后修改activity_main.xml中的代码,如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/re

  • Android自定义View实现游戏摇杆键盘的方法示例

    前言 本文主要给大家介绍的是关于Android自定义View实现游戏摇杆键盘的相关内容,为什么会有这篇文章呢?因为在之前的一个项目,操作方向的方式为上下左右,左上需要同时按住左键和右键的方式进行操作. 如下图: 近来需要升级项目,操作方式改为类似王者荣耀的摇杆操作. 如下图: 好了,下面话不多说了,跟着小编来一起看看是如何实现的吧. 绘制背景 实现遥感按钮,需要绘制背景,绘制中心的遥感按钮.绘制遥感背景,需要创建一个RemoteViewBg类,存储背景图,减少重复创建bitmap. Remote

  • Android自定义View中attrs.xml的实例详解

    Android自定义View中attrs.xml的实例详解 我们在自定义View的时候通常需要先完成attrs.xml文件 在values中定义一个attrs.xml 然后添加相关属性 这一篇先详细介绍一下attrs.xml的属性. <?xml version="1.0" encoding="utf-8"?> <resources> //自定义属性名,定义公共属性 <attr name="titleText" for

  • Android 自定义 View 中使用 Spannable的实例详解

    我们都知道 Android 中使用 Spannable 可以实现 TextView 富文本的显示,但是在自定义控件中如何使用 Spannable 绘制不同样式的文字呢? 例如这种效果,标题中的 分数字61 是粗体,分 是常规字体,并且相对于 61 更小些. 第一反应可能是使用 SpannableString.setSpan() 设置 RelativeSizeSpan, 然后在 onDraw() 中进行绘制,事实是这样实现是没有效果的,因为 onDraw() 中只能获取到 SpannableStr

  • Android自定义view实现滚动选择控件详解

    目录 前言 需求 编写代码 主要问题 前言 上篇文章通过一个有header和footer的滚动控件(Viewgroup)学了下MeasureSpec.onMeasure以及onLayout,接下来就用一个滚动选择的控件(View)来学一下onDraw的使用,并且了解下在XML自定义控件参数. 需求 这里就是一个滚动选择文字的控件,还是挺常见的,之前用别人的,现在选择手撕一个,核心思想如下: 1.有三层不同大小及透明度的选项,选中项放在中间 2.接受一个列表的数据,静态时显示三个值,滚动时显示四个

  • Android自定义View实现绘制虚线的方法详解

    前言 说实话当第一次看到这个需求的时候,第一反应就是Canvas只有drawLine方法,并没有drawDashLine方法啊!这咋整啊,难道要我自己做个遍历不断的drawLine?不到1秒,我就放弃这个想法了,因为太恶心了.方法肯定是有的,只不过我不知道而已. 绘制方法 最简单的方法是利用ShapeDrawable,比如说你想用虚线要隔开两个控件,就可以在这两个控件中加个View,然后给它个虚线背景. 嗯,理论上就是这样子的,实现上也很简单. <!-- drawable 文件 --> <

  • Android自定义View圆形图片控件代码详解

    前言 在日常开发中,圆形的图片效果还是很常见的.可以通过给Paint设置Xfermode来实现,这里简单记录如下. 实现 实现圆形效果的核心是PorterDuffXfermode,对于PorterDuffXfermode,这里不展开,可以查询相关资料. 核心代码 //绘制背景 canvas.drawCircle(mSize / 2, mSize / 2, mSize / 2, mPaint); //设置模式为:显示背景层和上层的交集,且显示上层图像 mPaint.setXfermode(new

  • Android自定义View实现纵向跑马灯效果详解

    首先看看效果图(录制的gif有点卡,真实的效果还是很流畅的) 实现思路 通过上面的gif图可以得出结论,其实它就是同时绘制两条文本信息,然后通过动画不断的改变两条文本信息距离顶部的高度,以此来实现滚动的效果. 具体实现 首先定义一些要用到的属性 <declare-styleable name="MarqueeViewStyle"> <attr name="textSize" format="dimension" /> &l

  • Android 中 Tweened animation的实例详解

    Android 中 Tweened animation的实例详解 Tweened animation有四种类型,下面主要介绍Scale类型. 运行效果如下: Android SDK提供了2种方法:直接从XML资源中读取Animation,使用Animation子类的构造函数来初始化Animation对象,第二种方法在看了Android SDK中各个类的说明就知道如何使用了,下面简要说明从XML资源中读取Animation.XML资源中的动画文件animation.xml内容为: <?xml ve

  • Android 通过自定义view实现水波纹效果案例详解

    在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果,兴致高昂的来找你,看了之后目的很明确,当然就是希望你能给她: 在这样的关键时候,身子板就一定得硬了,可千万别说不行,爷们儿怎么能说不行呢: 好了,为了让大家都能给妹纸们想要的,后面会逐渐分享一些比较比较不错的效果,目的只有一个,通过自定义view实现我们所能实现的动效: 今天主要分享水波纹效果: 标准正余弦水波纹: 非标准圆形液柱水波纹: 虽说都是水波纹,但两者在实现上差异是比较大的,一个通过正余

  • Android通过自定义view实现刮刮乐效果详解

    前言 已经有两个月没有更新博客了,其实这篇文章我早在两个月前就写好了,一直保存在草稿箱里没有发布出来.原因是有一些原理性的东西还没了解清楚,最近抽时间研究了一下混合模式,终于也理解了刮刮乐是怎么实现的,所以想继续分享一下自己的一些心得,先上效果图. 效果图: 实现原理 其实刮刮乐实现原理也不算很复杂,最关键的还是需要了解Paint的混合模式.因为刮刮乐是由两个bitmap组成的,一个是源图另一个是目标图,我们需要把目标图的颜色改成灰色,在源图上面盖上了一张灰色的目标图.当手指滑动屏幕时paint

  • Android xml解析实例详解

    Android  xml解析实例详解 实现效果图: XmlActivity package com.Android.xiong.gridlayoutTest; import android.app.Activity; import android.content.res.XmlResourceParser; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; impo

随机推荐