我在做android.r.drawable项目的ui,往drawable文件夹里面导入图片,layout下的main.xml也做了相应的修改,但有错误

您所在的位置: &
使用XML布局文件控制UI界面
使用XML布局文件控制UI界面
机械工业出版社
《Android开发宝典》第3章用户界面设计,本章向读者介绍的是进行用户界面设计的相关内容,主要包括Android中控制UI界面的四种方法和常用的四种布局管理器。本节为大家介绍使用XML布局文件控制UI界面。
3.1.1&& 使用XML布局文件控制UI界面
在Android中,提供了一种非常简单、方便的方法用于控制UI界面。该方法采用XML文件来进行界面布局,从而将布局界面的代码和逻辑控制的Java代码分离开来,使用程序的结构更加清晰、明了。
使用XML布局文件控制UI界面可以分为以下两个关键步骤。
(1)在Android应用的res/layout目录下编写XML布局文件,可以是任何符合Java命名规则的文件名。创建后,R.java会自动收录该布局资源。
(2)在Activity中使用以下Java代码显示XML文件中布局的内容。
setContentView(R.layout.main);&
在上面的代码中,main是XML布局文件的文件名。
通过上面的代码步骤就可轻松实现布局并显示UI界面功能了。下面通过一个具体的例子来演示一下如何使用XML布局文件控制UI界面。
【例3.1】在Eclipse中创建Android项目,名称为3.1,使用XML布局文件实现游戏的开始界面。(实例位置:光盘\mr\example\第3章\3.1)
(1)修改新建项目3.1的res/layout目录下的布局文件main.xml。在该文件中,采用帧布局(FrameLayout),并且添加两个TextView组件,第一个用于显示提示文字,第二个用于在窗体的正中间位置显示开始游戏按钮。修改后的代码如下:
代码位置:光盘\mr\example\第3章\3.1\res\layout\main.xml01&&&&version="1.0"&encoding="utf-8"&02&&&&xmlns:android="/apk/res/android"&03&&&&&&&android:layout_width="fill_parent"&04&&&&&&&android:layout_height="fill_parent"&05&&&&&&&android:background="@drawable/background"&06&&&&&&&&07&&&&&&&&08&&&&&&&&& &09&&&&&&&&&&&android:layout_width="fill_parent"& &10&&&&&&&&&&&android:layout_height="wrap_content"& &11&&&&&&&&&&&android:text="@string/title"&12&&&&&&&&&&&style="@style/text"&13&&&&&&&&14&&&&&&&&15&&&&&&&& &16&&&&&&&&android:id="@+id/startButton"& &17&&&&&&&&android:layout_gravity="center"&18&&&&&&&&android:text="@string/start"&19&&&&&&&&android:layout_width="wrap_content"&20&&&&&&&&android:layout_height="wrap_content"&21&&&&&&&&style="@style/text"&22&&&&&&&&23&&&&
说明:在布局文件main.xml中,通过设置布局管理器的android:background属性,可以为窗体设置背景图片;通过设置具体组件的style属性,可以为组件设置样式;使用android: layout_gravity="center"可以让该组件在帧布局中居中显示。
(2)修改res/values目录下的strings.xml文件,并且在该文件中添加一个用于定义开始按钮内容的常量,名称为start,内容为“单击开始游戏......”。修改后的代码如下:
代码位置:光盘\mr\example\第3章\3.1\res\values\strings.xml01&&&&version="1.0"&encoding="utf-8"&02&&&&03&&&&&&&&name="title"使用XML布局文件控制UI界面&04&&&&&&&&name="app_name"3.1&05&&&&&&&&name="start"单击开始游戏......&06&&&&
说明:strings.xml文件用于定义程序中应用的字符串常量。其中,每一个&string&子元素都可以定义一个字符串常量,常量名称由name属性指定,常量内容写在起始标记&string&和结束标记&/string&之间。
(3)为了改变窗体中文字的大小,需要为TextView组件添加style属性,用于指定应用的样式。具体的样式需要在res/values目录中创建的样式文件中指定。在本实例中,我们创建一个名称为styles.xml的样式文件,并且在该文件中,创建一个名称为text的样式,用于指定文字的大小和颜色。styles.xml文件的具体代码如下。
代码位置:光盘\mr\example\第3章\3.1\res\values\styles.xml01&&&&version="1.0"&encoding="utf-8"&02&&&&03&&&&&&&&name="text"&04&&&&&&&&&&name="android:textSize"24px&05&&&&&&&&&&name="android:textColor"#111111&06&&&&&&&&07&&&&
(4)在主活动中,也就是MainActivity中,应用以下代码指定活动应用的布局文件:
代码位置:光盘\mr\example\第3章\3.1\src\com\mingrisoft\MainActivity.java
setContentView(R.layout.main);&
说明:在应用Eclipse创建Android项目时,Eclipse会自动在主活动的onCreate()方法中添加指定布局文件main.xml的代码。
在模拟器上运行本实例,将显示如图3.1所示的运行结果。
图3.1&& 实现游戏的开始界面试一试:根据以上程序,制作一个靠窗体底部居中显示开始链接的游戏开始界面。提示:将布局文件中添加的TextView组件的android:layout_gravity属性值设置为bottom| center_horizontal即可。【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
作为Android开发者,最头疼是什么?相信大家会异口同声的说Bug!
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
这本书是写给程序员和项目经理的。作者结合自身的丰富
本书全面讲解WPF的实际工作原理,是一本WPF权威著作。
SQL Server 2012附带了强大的Analysis Services新功能
您如何保证您的网站确实给予用户他们所需要的,并对您产生商业成果?您需要了解谁是您的用户,您的用户的目标、行为和观点是什么
51CTO旗下网站Android Layout布局上的图片如何突破背景图
11:41:14 中国学网 转载
编辑:李强
为了帮助网友解决“Android Layout布局上的图片”相关的问题,中国学网通过互联网对“Android Layout布局上的图片”相关的解决方案进行了整理,用户详细问题包括:本帖最后由 venlentine 于
21:18:01 编辑布局layoutandroid要实现的效果已经实现的效果代码如下,图标图片突破不出背景图啊,请问如何实现&FrameLayout&&&&&&&&xmlns:android="//apk/res/android"&&&&&&&&android:id="@+id/list_company_item"&&&&&&&&android:layout_width="fill_parent"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:background="@drawable/bg_company_item"&&&&&&&&android:layout_margin="30dp"&&&&&&TableLayout&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:layout_width="fill_parent"&&&&&&&&android:layout_gravity="center_vertical"&&&&&&&&&&TableRow&&&&&&&&&&&&&&ImageView&&&&&&&&&&&&&&&&android:src="@drawable/icon_item"&&&&&&&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&&&&&&&android:layout_gravity="center_vertical"&&&&&&&&&&&&&&&&/&&&&&&&&&&/TableRow&&&&&&/TableLayout&&/FrameLayout&,具体解决方案如下:解决方案1:android:layout_maginleft&=&"-xxx"解决方案2:LS正解&解决方案3:android:layout_maginleft&="-20dp"但是需要看你具体的情况而且需要在线性布局中效果最好解决方案4:在editText代码中加入android:drawableLeft="@drawable/ic"""里是你要加入的图片解决方案5:.9图就ok了啊解决方案6:android:layout_maginleft&=&"-20dp"不行啊,变成下面这样,被隐藏了解决方案7:&EditText&&&&&&&&android:id="@+id/editText1"&&&&&&&&android:layout_width="wrap_content"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&android:background="@android:drawable/editbox_background"&&&&&&&&android:drawableLeft="@drawable/ic_launcher"&&&&&&&&android:ems="10"&/&解决方案8:&EditText&&&&&&&&android:id="@+id/editText1"&&&&&&&&android:layout_width="wrap_content"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&android:background="@android:drawable/editbox_background"&&&&&&&&android:drawableLeft="@drawable/ic_launcher"&&&&&&&&android:ems="10"&/&解决方案9:&EditText&&&&&&&&android:id="@+id/editText1"&&&&&&&&android:layout_width="wrap_content"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&android:background="@android:drawable/editbox_background"&&&&&&&&android:drawableLeft="@drawable/ic_launcher"&&&&&&&&android:ems="10"&/&解决方案10:FrameLayout向右平移一下不行吗?解决方案11:引用&9&楼&u&的回复:&EditText&&&&&&&&android:id="@+id/editText1"&&&&&&&&android:layout_width="wrap_content"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&android:background="@android:drawable/editbox_background"&&&&&&&&android:drawableLeft="@drawable/ic_launcher"&&&&&&&&android:ems="10"&/&你这个是在相对布局才可以使用的呀解决方案12:android:layout_maginleft&=&"-20dp"-20是代表向左移肯定会有问题的啊,改为android:layout_maginleft&=&"20dp"应该就可以了,LZ试一下吧解决方案13:改布局方式不行么?感脚用相对布局不就简单了?通过对数据库的索引,我们还为您准备了:设置最底层layout(随便哪个布局)的背景为图片
android:background="@drawable/放在drawable里的图片名"
图片名不能大写 不能有中文===========================================用RelativeLayout 可以设置那张小图标在父布局的任意位置 上 下 左 右 anywhere.===========================================如果按你所说的情况,一个页面上要是同时显示5个layout的话。那五个肯定是不同的。不... 布局
if(convertView==null){
convertView= inflater.inflate(R.layout.main, null);
TextVi...===========================================相对布局 android:layout_below 将该控件的顶部至于给定ID的控件之下===========================================LinearLayout 中设置 android:orientation="vertical" 这样就是竖直排列 LinearLayout 中的所有子布局都是竖直的 你把 A 图片 B 依次写在LinearLayout 中就行了===========================================你在最外层的layout上面设置居中,然后在里层的layout上面直接布局就行了,这样用户名和密码还有图片就会居中显示===========================================这个问题很简单!1.最外面使用一个linearLayout背景设置为那个橘黄色的图片。2.你那个按钮也可以采用背景图片(imgeButton、或者textView什么都可以)3.输入框采用EditText===========================================1.最外面使用一个 linearLayout 背景设置为那个橘黄色的图片。 2.你那个按钮 也可以采用背景图片(imgeButton、或者textView什么都可以) 3.输入框 采用 EditText===========================================res目录主要是存放资源文件的!layout 布局 这个就是你经常看到的与用户交互的界面的... 另一种是帧动画,逐帧播放设置的资源; drawable 主要是是存放所使用的图片的! menu:菜...===========================================你下面的图片layout中的id应该是对应工程中那个layout文件夹中.xml文件的id===========================================android学习总结----Activity&view
什么是Activity?
Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。
它是 android 应用程序的基本功能单元。
Activity 本身是没有界面的
什么是view/ viewGroups?
view/ viewGroups :表示在 android 平台上的基本用户界面单元。
view :为指定的屏幕矩形区域存储布局和内容。处理尺寸和布局,绘制,焦点改变,翻屏,按键 等…
viewGroups:包含并管理下级系列的views 和 下级的
viewGroup&
Activity 生命周期和信息传递
Activity的生命周期:
Activity 状态
当一个 Activity 在屏幕的最上层的时候(堆栈的最顶端),它就是 active 或 running状态
如果一个 Activity 失去焦点(focus)但是还看得到它的画面(比如:一个新的Activity 并不是全屏
或者是半透明的状态),那失去焦点的这个 Activity 则是处于 pause
的状态,它依然是活的(“活的”意思就是说它本身的状态和数据都是存在的,也跟窗口管理程序保持联系着)。像这种 pause 的
Activity 只有一种情况会消失,就是当系统的内存不足时,系统会自动判断,把不重要的 Activity 清除。
如果一个Activity 被其他的 Activity
完全的遮盖住,他仍然保有全部的状态及数据,但因为它已不再被使用者看见,所以他的画面是被隐藏起来的(画面不需要进行更新),当系统内存不足时,这种stop
状态的 Activity 是最先被考虑拿下来释放内存的。
当一个 Activity 处于 pause 或 stop 的状态时,系统可以要求 Activity
结束(finish)或直接移除(kill)它。当它需要再度呈现在使用者面前时,他必须要能完整的重新启动及恢复先前的状态。
Activity 状态转换图
Activity 信息传递:
(我觉得 android 的信息传递跟 WM 中的 message 很像。)
说到 Activity 信息传递,关键就是以下两个类:
android 用了一个很特别的类 Intent 来使得从一个画面跳转到另一个画面,Intent
是用来描述一个程序想要做些什么事。
我们都知道有四大核心组件
Activity、Service、Broadcast Receiver和Content Provider,略去Content
Provider不提,那么剩下的三个组件之间的通信考什么?这就是Intent!!它不仅可以在同一个应用中起传递信息的作用,还是可以在不同的应用进行传递信息。(信息传递方式与方法
Intent 数据结构中主要分为两个部分:一个是动作(例如 VIEW EDIT
PICK...),一个是对数据产生的反应(数据是以URI的形式传递的)。
Intent Filter
当 Intent 要求做某件事的时候,Intent Filter 被用来描述这个 Activity 能够做些什么(就是说 Intent
是发送方,而 Intent Filter 是接收方的)。
比如,一个 Activity 要能够显示个人联络数据,就是必须在 Intent Filter 说明你要如何处理个人联络数据,并用
ACTION_VIEW 呈现出来。
Intent可以分为两类,一类是显式的Intent,一类是隐式的Intent。显示的Intent就是指定了组件名字的,隐式的就是没有指定Intent的组件名字,需要Android根据Intent中的Action、data、Category等来解析匹配。而目标组件(Activity、Service、Broadcast
Receiver)怎通过设置他们的Intent Filter来界定其处理的Intent。如果一个组件没有定义Intent
Filter,那么它只能接受处理显示的Intent,只有定义了Intent
Filter的组件才能同时处理隐式和显示的Intent。(详见:)
说到 Intent Filter 就必须说一下 AndroidManifest.xml 文件,因为 Intent Filter
都是在这个文件夹下声明的。
例子程序:
view/ viewGroups
界面布局:
android的界面布局在资源文件中就可以做到,当然也可用程序实现(这两种方法我们在下面都会介绍到)。但是最好还是在资源文件中做,然后用java实现逻辑,这样做就可以实现界面展现与逻辑的独立管理。
布局参数(LayoutParams)&&
每一个 ViewGroup 类使用一个继承于 ViewGroup.LayoutParams 的嵌套类,LayoutParams
包含定义了子节点 view 的尺寸和位置的属性类型。
几个常用的布局对象
FrameLayout
最简单的布局对象
在屏幕上故意保留的空白空间,你可以之后填充一个单独的对象
所有的子元素都钉到屏幕的左上角
不能为子元素指定位置
LinearLayout
在一个方向上(垂直或水平)对齐所有的子元素。所有子元素一个跟一个的堆放。
一个垂直列表每行将只有一个子元素(无论它们有多宽)
一个水平列表 只是一列的高度(用最高的元素的高度来填充)
main.xml 代码样例
&?xml version="1.0"
encoding="utf-8"?&
&!-- 布局对象为LinearLayout
&LinearLayout
&!-- 声明命名空间
xmlns:android="
android:orientation="vertical"&
&!-- 垂直分布
android:layout_width="fill_parent" &!-- 该布局对象宽为屏宽
android:layout_height="fill_parent" &!-- 该布局对象高为屏高
&!-- 子元素 TextView
&TextView&&
android:layout_width="fill_parent" &!-- 子元素宽为屏宽
android:layout_height="wrap_content"& &!-- 子元素高为自身高度 &&
&!-- 显示的文本 类型为string 内容在value文件夹下名字为hello的对象
android:text="@string/hello"
子元素ID值在java文件中调用时可以用;—&
&!--"+" 会使R.java下自动生成类型为id的名为test_1对象
android:id="@+id/test_1"
android:textColor="#00ff00"
android:textStyle="bold"
android:id="@+id/test_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textColor="#ff0000"
android:textStyle="italic"&
&/TextView&
&/LinearLayout&
&& 效果图:
TableLayout
像表格似的,把子元素放入[行][列]中
不显示行号、列号 或是单元格边界线
单元格不能跨行
AbsoluteLayout
使子元素能够指明确切的 X/Y 坐标显示在屏幕上
(0,0) 点是屏幕的左上角
允许元素重叠(不推荐)
一般不建议使用这种布局对象,因为在绝对了
RelativeLayout
让子元素指定它们相对于其他元素的位置(通过 ID 来指定)或是相对于父布局对象
资源文件目录
我们来看一下资源目录的结构和功能(项目名称为 ActivityTest ):
如上图所示:
bin 目录:里面存放的是编译完成后的 class 文件和 .apk 安装文件
gen 目录:该目录的最底层是一个 R.java 文件(这个文件很重要,在程序中靠它来调用资源)
res 目录:资源文件夹
&&&&&&&&&&&&
drawable :放置资源图片
&&&&&&&&&&&&
layout :放置界面布局的 xml 文件
&&&&&&&&&&&&
values :放置界面布局中用到的 string color id 等…
src 目录:java代码目录
资源文件的具体使用方法,详见:
在java程序中进行布局设置
程序样例:
package zyp.A
//导入要使用的包
import android.app.A
import android.graphics.C
import android.os.B
android.widget.LinearL
import android.widget.TextV
import class Test extends
Activity {
&& //定义使用的对象
private LinearLayout myLayout;
LinearLayout.LayoutPatams& layoutP;
private int WC =
LinearLayout.LayoutPatams.WRAP_CONTENT;
private TextView black_TV;
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
//实例化一个LinearLayout 布局对象
myLayout= new LinearLayout(this);
//设置LinearLayout的布局为垂直布局
myLayout.setOrientation(LinearLayout.VERTICAL);
&&&&&&&&&&&&&
//加载到主屏幕
&&&&&&&&&&&&&&
setContentView(myLayout);
&&&&&&&&&&&&&
//实例化一个LinearLayout 布局参数,用来添加View
&&&&&&&&&&&&&&
layoutP = new
LinearLayout.layoutParams(WC
&&&&&&&&&&&&&
//实例化一个TextView对象
&&&&&&&&&&&&&
black_TV = new TextView(this);
&&&&&&&&&&&&&
//把TextView添加到LinearLayout布局中
&&&&&&&&&&&&&
myLayout.addView(black_TV, layoutP);
&&&&&&&&&&&&&
//设置文本颜色和文本内容
&&&&&&&&&&&&&
black_TV.setText(“黑色”);
&&&&&&&&&&&&&
black_TV.setTextColor(Color.BLACK);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。跟我一起学Android程序开发之让App的背景的自适应及图片不失真
app是否完美,UI(程序界面)占很大一部分,android程序最长遇到的界面问题就是背景自适应问题和图片的失真问题。这里我们将寻找避免此类问题的方法和原理。
1.背景自适应且不失真问题的存在& &
&制作自适应背景图片是UI开发的一个广泛问题,也是界面设计师渴望解决的问题,我相信我们彼此都深有体会。& &
&比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化;标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。& &
&根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大家介绍一下,其实有的时候还是很有用的,但是说起来会比较麻烦,就不说这个非重点了,略去,如果大家真的要介绍,在回复中说明,我再考虑一下。& & &Android针对这种情况,专门制作了一种.9.PNG格式来解决这个问题。
2.9.PNG格式。& &
&我不想在这里过多的讨论PNG格式的定义问题。但是.9.PNG确实是标准的PNG格式,只是在最外面一圈额外增加1px的边框,这个1px的边框就是用来定义图片中可扩展的和静态不变的区域。特别说明,left和top边框中交叉部分是可拉伸部分,未选中部分是静态区域部分。right和bottom边框中交叉部分则是内容部分(变相的相当于定义看一个内边距,神似padding功能,后面我会单独介绍一下),这个参数是可选的, 如下图。&ignore_js_op&&
在Android中以9.PNG格式的图片未背景,则能够自定义拉伸而不失真,比如的Button就是一个典型的例子。&& & &其实呢,无论是left和top,还是right和bottom都是把图片分成9块 (边角四块是不能缩放的,其他的四块则是允许缩放的),所以叫做9.PNG。
3. 使用Draw9Patch.jar制作9.PNG图片之定义拉伸区域。& &
&前面已经了解到9.PNG格式的工作方式,下面我们使用谷歌提供的Draw9Patch(运行android-sdk-windows\tools目录下的Draw9Patch.bat)来制作.9.PNG图片。& &
&第一步:准备要拉伸的图片。& &
& &&ignore_js_op&&& &
&非常小的一张图片,我希望以此为背景,中间部分填充文章内容。& &
&第二步:制作.9.PNG图片。& &
&打开Draw9Patch,把图片拖进去,如下:&ignore_js_op&&& &
&默认的拉伸是整体拉伸,其实边框部分我们并不想拉伸,好,我们自己来定义拉伸区域,如下图:&ignore_js_op&&&ignore_js_op&
& 然后点击File,导出为content.9.png。& &
& 第三步:在layout文件中使用制作的 .9.PNG图片.& &
& 新建工程Draw9Patch,默认主Activity为Draw9PatchActivity.:
public void onCreate(Bundle savedInstanceState)
& & super.onCreate(savedInstanceState);
& & setContentView(R.layout.main);
& &我们把content.9.png文件拷贝到/res/drawable文件夹下,打开/res/layout目录下的main.,申明如下:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
& & android:orientation="vertical"
& & android:layout_width="fill_parent"
& & android:layout_height="fill_parent"
& & android:background="#777"
& & android:padding="8dip"
& & &TextView
& & android:layout_width="fill_parent"
& & android:layout_height="wrap_content"
& & android:text="正文:A NinePatchDrawable graphic is a stretchable bitmap image."
& & android:background="@drawable/content"
& & android:textColor="#000"
&/LinearLayout&
如图,&ignore_js_op&&& & &我们修改text,
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
& & android:orientation="vertical"
& & android:layout_width="fill_parent"
& & android:layout_height="fill_parent"
& & android:background="#777"
& & android:padding="8dip"
& & android:layout_width="fill_parent"
& & android:layout_height="wrap_content"
& & android:text="正文:A NinePatchDrawable graphic is a stretchable bitmap image, which Android will automatically resize to accommodate the contents of the View in which you have placed it as the background. A NinePatch drawable is a standard PNG image that includes an extra 1-pixel-wide border."
& & android:background="@drawable/content"
& & android:textColor="#000"
&/LinearLayout&
如图,&ignore_js_op&
&可以看出,边框非常的清晰。下图是未使用.9.PNG的对比图,而且也不是我们要的效果:
&ignore_js_op&&
&到这里为止,我们已经基本会制作.9.PNG图片了。为了知识体系的全面性和深入性,我们继续。
4.使用Draw9Patch.jar制作9.PNG图片之定义内容区域。& &
&是不是觉得文字和边距挨的太近,好,我们使用right和bottom边的线来定义内容区域,来达到增大内边距的目的。&ignore_js_op&&& &
&我们定义了一个很小的内容区域,其他的地方则自动充当边框,从而使内边距显的很大,如下图,&ignore_js_op&&& &
&在这里,我要特别说明,一开始为了增大内边距,很容易惯性思维,在&TextView&中申明android:padding="10dip" 之类的,我在这里劝告朋友们不要这么做,一是你将无法预知你的显示,二是这比较混淆,因为设置内容区域就是确定padding,所以我在前面部分说他们是神似。我个人认为通过内容区域设定padding比在布局xml中定义padding更优雅,更简洁!& &
&关于Draw9Patch工具的其他使用说明,我在次不再累述,因为要说的话太多,为了节省篇幅,请参考官方文档。
5.制作.9.PNG的高级技巧。& &
& 对于初学Draw9Patch的人来说,这可以算是高级技巧,那就是:拉伸区域,可以不是连续的,可以不止一块,而且是和自定义的边框线的长度成正比。& &
& 直接上图说明:&ignore_js_op&
6.SDK中如何处理9.PNG图片。& &
&SDK专门针对9.PNG做了定义和处理,这里我们只是做个简单的流程分析,Bitmap在读取图像流数据的时候,会把判断图片的NinePatchChunk(9Patch数据块),如果NinePatchChunk不为空,则是NinePatchDrawable,NinePatchDrawable则又会交给NinePatch处理:
setNinePatchState(new NinePatchState(
&new NinePatch(bitmap, bitmap.getNinePatchChunk(), "XML 9-patch"),
&padding, dither), r);
NinePatch检验成功则调用本地方法,绘制出最终的图片:
nativeDraw(canvas.mNativeCanvas, location,
& mBitmap.ni(), mChunk, paint != null ? paint.mNativePaint : 0,
& canvas.mDensity, mBitmap.mDensity);
7.android系统中大量应用了9.PNG图片。& & &通过随便一个rom,找到里面的framework_res.apk,里面有大量的9.PNG格式文件,被广泛的应用起来,比如常见的有:& & &按钮:&ignore_js_op&&ignore_js_op&&ignore_js_op&&& & &解锁:&ignore_js_op&&ignore_js_op&&ignore_js_op&&& & &下拉框:&ignore_js_op&&ignore_js_op&&ignore_js_op&&& & &标题栏:&ignore_js_op&&& & &Toast:&ignore_js_op&&& &
&还有搜索,键盘,放大缩小控件,时间加减等等,我就不一一列举。
8.最后送上一些图例,以飨读者,以做后鉴:&ignore_js_op&&赏图1 本人之作&ignore_js_op&&赏图2 下拉按钮&ignore_js_op&&赏图3 文章头部背景&&ignore_js_op&&赏图4 系统头部背景&ignore_js_op&&赏图5 再来一个头部背景&
关键词:& & & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事/刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
你还可能关注…
本周热门内容

我要回帖

更多关于 android.r.drawable 的文章

 

随机推荐