zoukankan      html  css  js  c++  java
  • 使用(Drawable)资源——LayerDrawable资源

          与StateListDrawable有点类似,LayerDrawable也可包含一个Drawable数组,因此系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会将会被绘制在最上面。

          定义LayerDrawable对象的XML文件的根元素为<layer-list.../>,该元素可以包含多个<item.../>元素,该元素可以指定如下属性。

    • android:drawable:指定作为LayerDrawable元素之一的Drawable对象。
    • android:id:为该Drawable对象指定一个标识。
    • android:buttom|top|left|button:它们用于指定一个长度值,用于指定将该Drawable对象绘制到目标组件的指定位置。   

         例如如下语法格式:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- 定义轨道的背景 -->
        <item android:id="@android:id/background"
            android:drawable="@drawable/grow"></item>
        <!-- 定义轨道上已完成的部分外观 -->
        <item android:id="@android:id/progress"
            android:drawable="@drawable/ok"></item>
    
    </layer-list>

    实例:定制拖动条的外观

         前面知道,使用SeekBar时可指定一个android:progressDrawable属性,该属性可改变SeekBar的外观,借助于LayerDrawable即可改变SeekBar的规定、已完成部分Drawable对象。

         例如定义如下Drawable资源     my_bar.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- 定义轨道的背景 -->
        <item android:id="@android:id/background"
            android:drawable="@drawable/grow"></item>
        <!-- 定义轨道上已完成的部分外观 -->
        <item android:id="@android:id/progress"
            android:drawable="@drawable/ok"></item>
    
    </layer-list>

    除此之外,该示例还定义了如下LayerDrawable对象      layout_logo.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item >
            <bitmap android:src="@drawable/ic_launcher"
                android:gravity="center"/>
        </item>
        <item android:top="25dp" android:left="25dp">
              <bitmap android:src="@drawable/ic_launcher"
                android:gravity="center"/>
        </item>
        <item android:top="50dp" android:left="50dp">
             <bitmap android:src="@drawable/ic_launcher"
                android:gravity="center"/>
        </item>
    </layer-list>

    上面的程序中定义了三个“层叠”在一起的Drawable对象,接着在界面布局文件中使用上面的my_bar.xml定义的Drawable对象来改变SeekBar的外观,并通过ImageView来显示上面的layout_logo的Drawable组件。界面布局的代码片段如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    <!-- 定义一个拖动条,并改变轨道外观 -->
    <SeekBar android:id="@+id/bar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progressDrawable="@drawable/my_bar"/>
    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/layout_logo"/>
    
    </LinearLayout>

    该程序的代码无须改变,直接加载、显示上面的界面布局文件即可,运行该程序出现如图6.4所示的界面。

     

  • 相关阅读:
    牛客网 二叉树的镜像 JAVA
    牛客网 反转链表 JAVA
    牛客网 调整数组顺序使奇数位于偶数前面 JAVA
    Integer to Roman LeetCode Java
    Valid Number leetcode java
    Longest Common Prefix
    Wildcard Matching leetcode java
    Regular Expression Matching
    Longest Palindromic Substring
    Add Binary LeetCode Java
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3438800.html
Copyright © 2011-2022 走看看