`

Android Shape Drawable Resources

 
阅读更多

本文主要介绍Drawable Resources的一种,Shape Drawable Resources的使用。其他Drawable类似

经常需要自己设置某个view的背景,比如类似新浪微博客户端微博源内容的灰底圆角效果,这个时候我们就可以使用Shape。

 

1、介绍

Shape Drawable Resources是指一个XML文件,它定义了几何形状,包括颜色和渐变

放在res/Drawable文件夹下,文件名即为资源id,可以在其他layout中调用R.drawable.filename,

对应的类为ShapeDrawable

shape包含矩形、椭圆形、行、环形。

 

2、使用

下面以为一个TextView设置一个渐变色的边框为例进行介绍,第三部分对具体属性含义进行介绍

2.1 定义一个渐变色的矩形shape,文件路径res/drawable/gradient_box.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

2.2 TextView属性设置

<TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

 其中 android:background="@drawable/gradient_box"表示设置背景为 gradient_box 这个drawable

或者在后台程序中设置

Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);

 

3、属性介绍

xml定义如下

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>

其中shape必须为根元素,android:shape定义了形状,默认为矩形。

corners只对矩形有效,表示圆角的度数

gradient表示渐变色

padding表示即对内的偏移

size为shape大小

solid为填充色

stroke为shape边线的设置

以上属性的自属性含义见drawable-Shape,更多可以使用的属性见GradientDrawable.

 

 

分享到:
评论

相关推荐

    Android:Drawable样式和尺寸单位源代码

    在Android开发中,Drawable是图形和图像的基本容器,它允许开发者创建、管理和显示各种图形对象,如颜色、形状、位图等。理解Drawable及其样式代码对于构建美观且功能丰富的用户界面至关重要。本篇文章将深入探讨...

    用 Drawable 实现一个自定义电池图标

    在Android开发中,Drawable是用于绘制图形对象的重要类,它能帮助我们实现各种自定义的UI元素,包括图标。本教程将深入讲解如何利用Drawable来创建一个自定义的电池图标,以此来展示Drawable的灵活性和实用性。 ...

    Android高级应用源码-drawable(图片).rar

    - 在代码中实例化:通过`ContextCompat.getDrawable()`或`Resources.getDrawable()`方法获取Drawable对象。 4. **Drawable的操作**: - 设置颜色过滤:使用`setColorFilter()`方法可以改变Drawable的颜色表现。 ...

    安卓开发-drawable(图片).zip.zip

    - **Shape Drawable**: 可以定义为各种形状(如矩形、圆、椭圆、线),常用于创建自定义按钮、背景等。 - **State List Drawable**: 根据控件的状态(如按下、选中、默认)显示不同图像。 - **Level List ...

    带有弧形顶部的布局背景

    综上所述,实现带有弧形顶部的布局背景,开发者需要对Android的图形绘制、自定义View、Shape Drawable以及Material Design有深入理解。通过以上方法,你可以创建出满足需求的弧形顶部布局,并在项目`MyNewApp`中灵活...

    Android LayerDrawable使用实例

    每个Drawable都被包含在一个`&lt;item&gt;`元素中,可以通过`android:drawable`或`android:src`属性指定对应的Bitmap、Shape或其他类型的Drawable。同时,`android:top`、`android:left`、`android:bottom`和`android:...

    Android中使用xml文件定义颜色资源.pdf

    有时,你可能需要在`drawable`资源文件中引用颜色资源,例如在shape或selector中。在这种情况下,同样可以通过`@color`来引用: ```xml &lt;shape xmlns:android="http://schemas.android.com/apk/res/android"&gt; ...

    android多种资源的链接

    2. 图像资源(Drawable Resources):存储在res/drawable目录中,包括位图(Bitmap)、九宫格图片(Nine-patch)、形状图(Shape)和矢量图(Vector Drawable)。这些图像资源用于按钮、图标和其他UI元素。 3. 文本...

    Shape_Drawables_Box:不断更新您的android项目的所有类型的形状可绘制对象

    1. **Android Drawable Resources**: Android中的可绘制资源是用于在屏幕上显示图像的文件,它们可以是位图(Bitmaps)、形状(Shapes)、动画(Animations)或者层叠列表(Layer List)。这些资源通常存储在项目的`...

    Android自定义ProgressBar

    &lt;item android:maxLevel="100" android:drawable="@drawable/progress_100" /&gt; ``` 3. **自定义尺寸**:在XML布局文件中,可以设置ProgressBar的width和height属性来改变其大小。 4. **自定义行为**:如果你需要...

    Android 中图片和按钮按下状态变化实例代码解析

    &lt;item android:state_selected="true" android:drawable="@drawable/shape_corner_button_fill"/&gt; &lt;item android:state_focused="false" android:drawable="@drawable/shape_corner_button"/&gt; ``` 这个选择器根据...

    LayerDrawable

    每个`&lt;item&gt;`标签代表一个Drawable层,可以通过设置`android:top`, `android:bottom`, `android:left`, `android:right`属性来调整各层的位置,或者通过`android:drawable`指定Drawable资源,甚至可以设置`android:...

    Android百分比进度条

    android:progressDrawable="@drawable/custom_progress_drawable"/&gt; ``` 创建一个名为custom_progress_drawable.xml的文件(位于res/drawable目录下),定义自定义进度条样式: ```xml &lt;layer-list xmlns:android...

    android UI设计

    &lt;item android:state_pressed="true" android:drawable="@drawable/button_pressed" /&gt; &lt;item android:drawable="@drawable/button_normal" /&gt; ``` 3. **应用到Button上**:将定义好的XML文件作为背景应用于...

    Android圆角图标的实现

    在实际开发中,还可以考虑使用其他方式来实现圆角图片,例如使用`Shape Drawable`或者`BitmapShader`,它们各有优缺点,适用于不同的场景。但通过自定义View的方式,可以更好地控制UI的定制化,同时也可以作为提升...

    xamarin android布局练习

    要自定义Checkbox样式,我们需要创建一个XML资源文件(通常在`Resources/drawable`目录下)来定义Checkbox的背景和选中状态。例如,我们可以创建一个`checkbox_selector.xml`文件,用 `&lt;selector&gt;` 元素定义不同状态...

    android通过按钮改变背景颜色

    此外,Android还提供了多种其他方式来改变按钮的外观,如使用Shape Drawable定义自定义背景,或者使用Material Design库的`com.google.android.material.button.MaterialButton`组件,它提供了更多的样式和动画选项...

    Android实现带动画效果的Tab Menu

    - 使用`Drawable`或`Shape Drawable`可以创建各种形状的Indicator,如线条、圆形等。 4. **使用`FragmentPagerAdapter`或`FragmentStatePagerAdapter`** - 为了适配`ViewPager`,我们需要创建一个`PagerAdapter`...

Global site tag (gtag.js) - Google Analytics