`

android shape背景渐变、控件美化及自定义title

阅读更多
1.Android 在XMl里面共享同一布局文件
一直以为共享同一布局文件都是在之前写好的布局之后复制过来,或者通过 java代码使用layoutInflater Add进来的。但今天提供了一个更为方便的使用方法,可以在你的任意LAYOUT文件里面将其他的LAYOUT文件拿过来使用,代码也很简单,如下:
<?xml version="1.0" encoding="UTF-8"?><id android:background="@drawable/layout_background" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"><text android:textcolor="#f0f0f0" android:layout_width="wrap_content" android:layout_height="wrap_content">


这是我定义的公用layout 文件,我给他起名为:title
然后我们在另外的布局文件如下使用:
<includelayout></includelayout>
即可将title 的布局直接拿到我们当前的布局文件中。
Tip:使用include标记将layout 放入我们当前的layout文件,也可以直接使用当前 view .findViewByid得到title 布局文件中的任意View 。


2.使用XML的方式为背景添加背景渐变的效果及控件美化
首先,在res/Drawable 文件夹里面添加一个jbshape.xml文件,然后写入如下代码:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"><solid android:color="#ff4100ff"></solid><gradient android:startcolor="#ff8c00" android:endcolor="#FFFFFF" android:angle="270"></gradient><stroke android:width="2dp" android:color="#dcdcdc"></stroke><corners android:radius="2dp"></corners><padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp"></padding></shape>


shape 节点配置的是图形的形式,主要包括方形、圆形等,默认为"rectangle"方形;

gradient 节点主要配置起点颜色、终点颜色及中间点的颜色、坐标、渐变效果(0,90,180从左到右渐变,270从上到下渐变)默认从左到右;

<solid android:color="#ff4100ff"></solid>实心的,填充里面;

<stroke android:dashwidth="3dp" android:dashgap="2dp" android:width="2dp" android:color="#FF00ff00" dashwidth dashgap width="2dp" padding corners version="”1.0″" encoding="”UTF-8″?"><linearlayout xmlns:android="”http://schemas.android.com/apk/res/android”" android:orientation="”vertical”" android:layout_width="”fill_parent”" android:layout_height="”fill_parent”" android:paddingleft="”0px”">



3.如何用代码自定义Android 自动生成的标题?

在onCreate中加入以下代码:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

这3句代码的顺序不可以颠倒。








原文链接:http://www.cnblogs.com/xirihanlin/archive/2010/06/14/1758145.html

Drawable资源

Drawable资源是对图像的一个抽象,你可以通过getDrawable(int)得到并绘制到屏幕上。这里有几种不同类型的Drawable:

Bitmap File
    一个Bitmap图像文件(.png、.jpg或.gif)。BitmapDrawable。
Nine-Patch File
    一个带有伸缩区域的PNG文件,可以基于content伸缩图片(.9.png)。NinePatchDrawable。
State List
    一个XML文件,为不同的状态引用不同的Bitmap图像(例如,当按钮按下时使用不同的图片)。StateListDrawable。
Color
    定义在XML中的资源,指定一个矩形(圆角可以有)的颜色。PaintDrawable。
Shape
    一个XML文件,定义了一个几何形状,包括颜色和渐变。ShapeDrawable。

AnimationDrawable资源的说明在【Animation资源】文章中。

Bitmap File

基本的Bitmap图像。Android支持几种不同格式的Bitmap文件:.png(最佳)、.jpg(可接受)、.gif(不要)。
注意:Bitmap文件可能会被aapt工具进行无损图像压缩优化。例如,一个真彩色的PNG(不超过256色)可能会被转换成一个带有颜色板的8位PNG。这样做能保证图片质量一样,但减少内存占用。因此,需要了解的是放在这个文件夹下的二进制图像在编译时可能会发生变更。如果你打算以位流方式读取图像来转化成Bitmap的话,可以把它们放到res/raw文件中,在这里,它们不会被优化。

File Location:
    res/drawable/filename.png (.png, .jpg, 或.gif)
    文件名会被当作资源ID使用。
Complied Resource Datatype:
    指向BitmapDrawable的资源指针。
Resource Reference:
    R.drawable.filename(Java)
    @[package:]drawable/filename(XML)
Example:
    在res/drawable/myimage.png位置保存了一张图片,在Layout XML中可以应用这个图片到一个View上:
    <imageview android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage"></imageview>

    下面的代码可以以Drawable方式得到图片:
    Resources res = getResources();
    Drawable drawable = res.getDrawable(R.drawable.myimage);

Nine-Patch File

NinePatch是一种PNG图像,可以定义拉伸区域,当View的content超出图像边界的话,Android会拉伸它。典型用法是把这个图像设置为View的背景,而这个View至少有一个尺寸设置为“wrap_content”,当这个View变大来容纳content时,Nine-Patch图像也会拉伸来匹配View的大小。

File Location:
    res/drawable/filename.9.png
    文件名将被当作资源ID使用。
Complied Resource Datatype:
    指向NinePatchDrawable的资源指针。
Resource Reference:
    R.drawable.filename(Java)
    @[package:]drawable/filename(XML)
Example:
    在res/drawable/myninepatch.9.png位置保存了一张图片,在Layout XML中可以应用这个图片到一个View上:
    <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch"></button>

State List

StateListDrawable是定义在XML中的Drawable对象,能根据状态来呈现不同的图像。例如,Button存在多种不同的状态(pressed、focused或other),使用StateListDrawable,你可以为Button的每个状态提供不同的按钮图像。

你可以在XML文件中描述状态列表。在<selector>元素里的每个<item>代表每个图像。每个<item>使用不同的特性来描述使用的时机。

当每次状态改变时,StateList都会从上到下遍历一次,第一个匹配当前状态的item将被使用——选择的过程不是基于“最佳匹配”,只是符合state的最低标准的第一个item。

File Location
    Res/drawable/filename.xml
    文件名将被当作资源ID使用。
Complied Resource Datatype:
    指向StateListDrawable的资源指针。
Resource Reference:
    R.drawable.filename(Java)
    @[package:]drawable/filename(XML)
Syntax:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantsize='["true"' android:dither='["true"' android:variablepadding='["true"'><item android:drawable="@[package:]drawable/drawable_resource" android:state_pressed='["true"' android:state_focused='["true"' android:state_selected='["true"' android:state_active='["true"' android:state_checkable='["true"' android:state_checked='["true"' android:state_enabled='["true"' android:state_window_focused='["true"'></item></selector>
Elements:
    <selector>
    必须。必须是根元素。可以包含一个或多个<item>元素。
    Attributes:
        xmlns:android
                  String。必须。定义XML的命名空间,必须是
                  “http://schemas.android.com/apk/res/android”。
              android:constantSize
           Boolean。“true”表示随着状态变化,Drawable的大小保持不变(所有状态中最大的size);“false”表示大小会变化。默认是false。
              android:dither
Boolean。“true”表示当Bitmap和屏幕的不是相同的像素设定时支持Bitmap抖动(例如,ARGB 8888的Bitmap和RGB 565的屏幕);“false”表示不支持。默认是“true”。
              android:variablePadding
                     Boolean。“true”表示Drawable的Padding可以变化;“false”表示Padding保持相同(所有状态的最大Padding)。使能这一特征需要在状态变化时处理Layout,一般都不支持。默认值是false。
    <item>
              定义特定状态的Drawable,通过它的特性指定。必须是<selector>的子元素。
              Attributes:
                  android:drawable
                            Drawable资源。必须。指向一个Drawable资源。
    android:state_pressed
Boolean。“true”表示按下状态使用(例如按钮按下);“false”表示非按下状态使用。
                  android:state_focused
Boolean。“true”表示聚焦状态使用(例如使用滚动球/D-pad聚焦Button);“false”表示非聚焦状态使用。
                  android:state_selected
Boolean。“true”表示选中状态使用(例如Tab打开);“false”表示非选中状态使用。
                  android:state_checkable
Boolean。“true”表示可勾选状态时使用;“false”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。)
                  android:state_checked
                            Boolean。“true”表示勾选状态使用;“false”表示非勾选状态使用。
                  android:state_enabled
Boolean。“true”表示可用状态使用(能接收触摸/点击事件);“false”表示不可用状态使用。
                  android:window_focused
Boolean。“true”表示应用程序窗口有焦点时使用(应用程序在前台);“false”表示无焦点时使用(例如Notification栏拉下或对话框显示)。
注意:记住一点,StateList中第一个匹配当前状态的item会被使用。因此,如果第一个item没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后(如下面的例子所示)。

Example:
    XML文件保存在res/drawable/button.xml。
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="@drawable/button_pressed"></item><!-- pressed --><item android:state_focused="true" android:drawable="@drawable/button_focused"></item><!-- focused --><item android:drawable="@drawable/button_normal"></item><!-- default --></selector>
    Layout XML将这个Drawable应用到一个View上:
<imageview android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/button"></imageview>

Color

定义在XML中的color,可以当作Drawable使用,来填充矩形区域(圆角可以有)。这种Drawable的行为很像是颜色填充。
注意:Color Drawable是一种简单的资源,可以使用name特性来引用其值(不再是XML文件的名)。因此,你可以在一个XML文件中的<resources>元素下添加多个Color Drawable。

File Location:
    res/drawable/filename.xml
    文件名随意。元素的name将会当作资源ID使用。
Complied Resource Datatype:
    指向PaintDrawable资源的指针。
Resource Reference:
    R.drawable.color_name(Java)
    @[package:]drawable/color_name(XML)
Syntax:
<?xml version="1.0" encoding="utf-8"?><resources><drawable name="color_name">color</drawable></resources>
Elements:
    <resources>
           必须。必须是根节点。
           没有特性。
    <drawable>
一个color Drawable。其值可以是任何有效的十六进制颜色值或者Color资源。Color值总是以“#”开头,后面紧跟Alpha-Red-Green-Blue信息,格式是:#RGB、#ARGB或者#AARRGGBB。
              Attributes:
                  name
                            String。必须。Color的名字。这个名字将被当作资源ID使用。
Example:
    XML文件保存在res/drawable/color.xml。
<?xml version="1.0" encoding="utf-8"?><resources><drawable name="solid_red">#f00</drawable><drawable name="solid_blue">#0000ff</drawable></resources>
    Layout XML将会把这个Color Drawable应用到一个View上:
<textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/solid_blue"></textview>
    代码中获取Color Drawable并应用到View上:
Resources res =  getResources();
Drawable redDrawable = res.getDrawable(R.drawable.solid_red);

TextView tv = (TextView) findViewByID(R.id.text);
tv.setBackground(redDrawable);

Shape

定义在XML中的几何形状。

File Location:
    res/drawable/filename.xml
    文件名将被当作资源ID使用。
Complied Resource Datatype:
    指向ShapeDrawable的资源指针。
Resource Reference:
    R.drawable.filename(Java)
    @[package:]drawable/filename(XML)
Syntax:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape='["rectangle"'><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"' android:useslevel='["true"'></gradient><solid android:color="color"></solid><stroke android:width="integer" android:color="color" android:dashwidth="integer" android:dashgap="integer"></stroke><padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer"></padding><corners android:radius="integer" android:topleftradius="integer" android:toprightradius="integer" android:bottomleftradius="integer" android:bottomrightradius="integer"></corners></shape>
Elements:
    <shape>
              必须。必须是根元素。
    Attributes:
              android:shape
                  Keyword。定义Shape的类型。有效的值包括:
Value
Desciption
"rectangle"
矩形。默认形状。
"oval"
椭圆。
"line"
水平直线。需要<stroke>元素定义线的宽度。
"ring"
环形。

接下来的特性只能在android:shape=”ring”时使用:
              android:innerRadius
                  Dimension。内环的半径。
              android:innerRadiusRatio
         Float。以环的宽度比率来表示内环的半径。例如,如果android:innerRadiusRatio=”5”,内环半径等于环的宽度除以5。这个值可以被android:innerRadius覆盖。默认值是9。
              android:thickness
                  Dimension。环的厚度。
              android:thicknessRatio
          Float。以环的宽度比率来表示环的厚度。例如,如果android:thicknessRatio=”2”,厚度就等于环的宽度除以2。这个值可以被android:thickness覆盖。默认值是3。
              android:useLevel
                  Boolean。“true”表示可以当作LevelListDrawable使用。一般都为“false”。
  
<gradient>
              为Shape指定渐变色。
Attributes:
              android:angle
Integer。渐变色的角度值。0表示从左到右,90表示从下到上。必须是45的倍数,默认是0。
              android:centerX
                  Float。渐变色中心的X相对位置(0-1.0)。当android:type=”linear”时无效。
              android:centerY
                  Float。渐变色中心的Y相对位置(0-1.0)。当android:type=”linear”时无效。
              android:centerColor
                  Color。可选的颜色,出现在start和end颜色之间。
              android:endColor
                  Color。end颜色。
              android:gradientRadius
                  Float。渐变色的半径。当android:type=”radial”时有效。
              android:startColor
                  Color。start颜色。
android:type
                  Keyword。渐变色的样式。有效值为:
Value
Description
"linear"
线性渐变,默认值。
"radial"
环形渐变。start颜色是处于中间的颜色。
"sweep"
sweep渐变
              android:useLevel
                  Boolean。“true”表示可以当作LevelListDrawable使用。
  
<solid>
              填充shape的单一色。
Attributes:
    android:color
                  Color。这个颜色会应用到shape上。
  
<stroke>
              shape的线形。
    Attributes:
              android:width
                  Dimension。线的厚度。
              android:color
                  Color。线的颜色。
              android:dashGap
                  Dimension。间断线间的距离。仅在android:dashWidth设定时有效。
              android:dashWidth
                  Dimension。间断线的大小。仅在android:dashGap设定时有效。

    <padding>
              内部View元素的边距。
    Attributes:
              android:left
                  Dimension。左内边距。
              android:top
                  Dimension。上内边距。
              android:right
                  Dimension。右内边距。
              android:bottom
                  Dimension。下内边距。

    <corners>
              为shape创建圆角。当shape是一个矩形时有效。
    Attributes:
              android:radius
                  Dimension。圆角的半径。会被下面的特性覆盖。
              android:topLeftRadius
                  Dimension。左上圆角半径。
              android:topRightRadius
                  Dimension。右上圆角半径。
              android:bottomLeftRadius
                  Dimension。左下圆角半径。
              android:bottomRightRadius
                  Dimension。右下圆角半径。

Examples:
    XML文件保存在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"></gradient><padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp"></padding><corners android:radius="8dp"></corners></shape>
    Layout XML将被当作ShapeDrawable应用到一个View上:
<textview android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content"></textview>
    代码中也可以获得ShapeDrawable,然后应用到View上:
Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);</corners></padding></stroke></solid></gradient></stroke></shape></drawable></resources></resources></selector></item></item></selector></item></item></selector></linearlayout></stroke></text></id>
分享到:
评论

相关推荐

    android shape的使用及渐变色、分割线、边框、半透明阴影

    Android Shape的使用及渐变色、分割线、边框、半透明阴影 Android Shape是一种在Android系统中使用的图形形状控件,可以用于创建各种形状的视图控件,例如矩形、椭圆、线条、圆环等。Shape控件可以使用xml文件来...

    Android中使用Shape自定义形状

    在Android开发中,Shape是XML布局文件中的一种元素,它允许开发者自定义各种图形,如矩形、椭圆、线和梯形等,用于创建丰富多彩的背景或按钮样式。本教程将深入探讨如何在Android中使用Shape来实现自定义形状。 1. ...

    Android控件美化之Shape的使用

    ### Android控件美化之Shape的使用 在Android开发过程中,为了提升用户体验,界面美观是非常重要的一个环节。在美化界面的过程中,`Shape`是一种非常实用且灵活的工具,它可以帮助开发者轻松实现各种各样的视觉效果...

    Android之shape实现控件圆角、背景等

    在Android开发中,Shape是XML绘图的一种方式,它允许开发者自定义视图的背景,包括设置圆角、颜色、边框等属性。本篇文章将深入探讨如何利用Shape来实现控件的圆角、背景以及边框效果。 一、Shape的基本结构 Shape...

    Android 自定义时间日期控件

    在Android开发中,有时我们可能需要为应用提供更加个性化的用户界面,这包括自定义时间日期控件。本文将深入探讨如何在Android中创建自定义的时间日期选择器,以满足特定的设计需求。我们将主要关注以下几个方面: ...

    安卓自定义控件相关-android-shape-imageview自定义形状的imageview.rar

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。`android-shape-imageview`是一个专门用于创建自定义形状的ImageView的项目,它允许开发者根据需求为图片设置不同的形状,比如圆形、矩形或是...

    Android Switch控件自定义

    本文将深入探讨如何自定义Android Switch控件,以满足特定设计需求。 首先,我们可以通过修改Switch的thumb和track属性来改变其外观。Thumb是开关的小滑块部分,而track是开关的背景轨道。在XML布局文件中,我们...

    android shape样式

    在Android开发中,Shape是XML资源文件中定义的一种图形元素,它可以用来创建各种形状,如矩形、椭圆、线和路径,同时支持自定义样式,包括圆角、虚线边框、部分圆角以及颜色的渐变效果。这篇内容将深入探讨Android ...

    Android Shape控件美化实现代码

    总之,Android Shape控件是实现UI美化的重要手段,它提供了一种灵活的方式来定义自定义背景和边框,使开发者能够根据应用的需求创造出独特且吸引人的界面设计。通过熟练掌握Shape的使用,开发者可以提升应用的整体...

    Android自定义控件:时间轴

    在Android开发中,自定义控件是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何根据提供的"Android自定义控件:时间轴"的标题和描述,实现一个灵活且高度可调整的时间轴视图。 首先,我们从“时间轴”...

    android 自定义Seekbar,包括图片,背景颜色

    在Android开发中,Seekbar是一种常用的控件,用于让用户选择一个介于最小值和最大值之间的数值。在标准的Seekbar基础上进行自定义,可以增强界面的美观性和用户体验。本教程将详细介绍如何在Android中自定义Seekbar...

    android自定义控件、自定义圆角布局Demo

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例"android自定义控件、自定义圆角布局Demo"提供了一个基于`FrameLayout`的自定义布局,它允许开发者创建具有圆角效果的视图,这对于构建...

    Android自定义星星评分控件

    在Android开发中,自定义控件是提升应用用户体验和界面个性化的重要手段。本文将深入探讨如何创建一个自定义的星星评分控件。首先,我们从博客链接(http://blog.csdn.net/a756213932/article/details/51939422)中...

    Android自定义控件——圆形进度条

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本篇文章将深入探讨如何创建一个圆形进度条,即`CircleProgressView`。这个控件能够以圆形的形式展示进度,常见于加载动画或者显示数据百分比的...

    android_SeekBar竖直显示自定义背景thumb完美Demo(附带解决说明)

    可以通过创建一个圆形或者矩形的Shape资源文件作为thumb的背景,然后在自定义SeekBar中应用这个资源。我们还可以通过设置thumb的偏移量来调整其在SeekBar中的位置。 4. **解决对齐问题**: 当SeekBar竖直显示时,...

    Android控件美化之Shape的使用[汇编].pdf

    在Android开发中,我们经常需要对UI控件进行自定义美化,以提升应用的视觉效果和用户体验。Shape是Android中一个非常实用的元素,它允许开发者定义自定义的图形样式,包括填充颜色、渐变、描边、圆角以及内部间距等...

    Android-TrapezoidPartsView-梯形控件

    "Android-TrapezoidPartsView-梯形控件"项目就是为了解决这样的需求,它提供了一个能够绘制梯形图像并处理其上的事件的自定义视图组件。下面我们将深入探讨这个项目的细节。 首先,我们要理解什么是梯形。梯形是一...

    android自定义Switch控件详解

    在Android开发中,自定义控件是提升应用个性化和用户体验的重要手段之一。本文将深入探讨如何自定义一个Switch控件,让开发者可以根据自己的需求和设计风格来调整颜色、背景和其他视觉元素。 首先,我们理解一下...

    Android自定义控件:Android L控件点击水波纹的实现(源码 + Demo)

    在Android开发中,自定义控件是提升应用用户体验和界面美观度的重要手段。"Android L控件点击水波纹的实现"是一个常见的需求,尤其是在设计现代感和交互性极强的用户界面时。Android L(Lollipop)引入了一种新的...

Global site tag (gtag.js) - Google Analytics