本文主要介绍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是图形和图像的基本容器,它允许开发者创建、管理和显示各种图形对象,如颜色、形状、位图等。理解Drawable及其样式代码对于构建美观且功能丰富的用户界面至关重要。本篇文章将深入探讨...
在Android开发中,Drawable是用于绘制图形对象的重要类,它能帮助我们实现各种自定义的UI元素,包括图标。本教程将深入讲解如何利用Drawable来创建一个自定义的电池图标,以此来展示Drawable的灵活性和实用性。 ...
- 在代码中实例化:通过`ContextCompat.getDrawable()`或`Resources.getDrawable()`方法获取Drawable对象。 4. **Drawable的操作**: - 设置颜色过滤:使用`setColorFilter()`方法可以改变Drawable的颜色表现。 ...
- **Shape Drawable**: 可以定义为各种形状(如矩形、圆、椭圆、线),常用于创建自定义按钮、背景等。 - **State List Drawable**: 根据控件的状态(如按下、选中、默认)显示不同图像。 - **Level List ...
综上所述,实现带有弧形顶部的布局背景,开发者需要对Android的图形绘制、自定义View、Shape Drawable以及Material Design有深入理解。通过以上方法,你可以创建出满足需求的弧形顶部布局,并在项目`MyNewApp`中灵活...
每个Drawable都被包含在一个`<item>`元素中,可以通过`android:drawable`或`android:src`属性指定对应的Bitmap、Shape或其他类型的Drawable。同时,`android:top`、`android:left`、`android:bottom`和`android:...
有时,你可能需要在`drawable`资源文件中引用颜色资源,例如在shape或selector中。在这种情况下,同样可以通过`@color`来引用: ```xml <shape xmlns:android="http://schemas.android.com/apk/res/android"> ...
2. 图像资源(Drawable Resources):存储在res/drawable目录中,包括位图(Bitmap)、九宫格图片(Nine-patch)、形状图(Shape)和矢量图(Vector Drawable)。这些图像资源用于按钮、图标和其他UI元素。 3. 文本...
1. **Android Drawable Resources**: Android中的可绘制资源是用于在屏幕上显示图像的文件,它们可以是位图(Bitmaps)、形状(Shapes)、动画(Animations)或者层叠列表(Layer List)。这些资源通常存储在项目的`...
<item android:maxLevel="100" android:drawable="@drawable/progress_100" /> ``` 3. **自定义尺寸**:在XML布局文件中,可以设置ProgressBar的width和height属性来改变其大小。 4. **自定义行为**:如果你需要...
<item android:state_selected="true" android:drawable="@drawable/shape_corner_button_fill"/> <item android:state_focused="false" android:drawable="@drawable/shape_corner_button"/> ``` 这个选择器根据...
每个`<item>`标签代表一个Drawable层,可以通过设置`android:top`, `android:bottom`, `android:left`, `android:right`属性来调整各层的位置,或者通过`android:drawable`指定Drawable资源,甚至可以设置`android:...
android:progressDrawable="@drawable/custom_progress_drawable"/> ``` 创建一个名为custom_progress_drawable.xml的文件(位于res/drawable目录下),定义自定义进度条样式: ```xml <layer-list xmlns:android...
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <item android:drawable="@drawable/button_normal" /> ``` 3. **应用到Button上**:将定义好的XML文件作为背景应用于...
在实际开发中,还可以考虑使用其他方式来实现圆角图片,例如使用`Shape Drawable`或者`BitmapShader`,它们各有优缺点,适用于不同的场景。但通过自定义View的方式,可以更好地控制UI的定制化,同时也可以作为提升...
要自定义Checkbox样式,我们需要创建一个XML资源文件(通常在`Resources/drawable`目录下)来定义Checkbox的背景和选中状态。例如,我们可以创建一个`checkbox_selector.xml`文件,用 `<selector>` 元素定义不同状态...
此外,Android还提供了多种其他方式来改变按钮的外观,如使用Shape Drawable定义自定义背景,或者使用Material Design库的`com.google.android.material.button.MaterialButton`组件,它提供了更多的样式和动画选项...
- 使用`Drawable`或`Shape Drawable`可以创建各种形状的Indicator,如线条、圆形等。 4. **使用`FragmentPagerAdapter`或`FragmentStatePagerAdapter`** - 为了适配`ViewPager`,我们需要创建一个`PagerAdapter`...