Android自定义模拟器skin 自定义属性(attrs.xml,TypedArray)的使用

Android1.5   HVGA的皮肤特别差劲,感觉笨笨的,傻傻的,呵呵……启动的时候还是默认的,我不喜欢……在网上搜了一下如何更改Android模拟器皮肤,现在把自己的设置过程写下来,分享给大家(其实很简单):

1、找素材;设置皮肤,当然要有皮肤素材了,你可以网上找,也可以自己PS,我建议还是大家PS比较好,如果能找到那就更好了,PS出来的大小自己可以掌握。这是我找的和PS过的素材

图片素材的命名规范可以参照原HVGA-P的图片名称

2、设置Layout布局文件;这个文件建议大家用写字板打开,而不要用记事本,虽然说记事本也能打开,但是打开之后版面有点乱,写字板打开后很整齐,一目了然,便于修改。当然,你还要打开原HVGA-P的Layout文件,根据里面的内容修改,最主要的是坐标的确定,这里比较费时!这个你依然可以用PS确定坐标进而修改,方便、精确……

3、替换原HVGA-P文件;

4、运行模拟器;这里请大家注意,运行的时候如若不设置运行参数,启动起来的将会是默认的HVGA皮肤,而不是刚才自定义的那个皮肤,设置参数方法如图(Eclipse里面设置,你也可以在命令行下设置,在此不做介绍):

看看运行之后的结果吧:

别担心,那些按钮都是有反应的,不是一个摆设呵呵……


2


 该实例是在自定义View上使用自定义属性的。

先来看看源码:MyView.java

Code:
  1. package com.adnroid.test;  
  2.   
  3. import com.adnroid.test.R;  
  4.   
  5. import android.content.Context;  
  6. import android.content.res.TypedArray;  
  7. import android.graphics.Canvas;  
  8. import android.graphics.Color;  
  9. import android.graphics.Paint;  
  10. import android.graphics.Rect;  
  11. import android.graphics.Paint.Style;  
  12. import android.util.AttributeSet;  
  13. import android.view.View;  
  14.   
  15. public class MyView extends View {  
  16.     private Paint myPaint;  
  17.     private static final String myString = "Welcome to our Zoon!";  
  18.   
  19.     public MyView(Context context) {  
  20.         super(context);  
  21.         // TODO Auto-generated constructor stub  
  22.     }  
  23.       
  24.     public MyView(Context context, AttributeSet attr) {  
  25.         super(context, attr);  
  26.         myPaint = new Paint();  
  27.         TypedArray a = context.obtainStyledAttributes(attr, R.styleable.myView);//TypedArray是一个数组容器  
  28.         float textSize = a.getDimension(R.styleable.myView_textSize, 30);//防止在XML文件里没有定义,就加上了默认值30  
  29.         int textColor = a.getColor(R.styleable.myView_textColor, 0xFFFFFFFF);//同上,这里的属性是:名字_属性名  
  30.         myPaint.setTextSize(textSize);  
  31.         myPaint.setColor(textColor);  
  32.         a.recycle();//我的理解是:返回以前取回的属性,供以后使用。以前取回的可能就是textSize和textColor初始化的那段  
  33.     }  
  34.     @Override  
  35.     protected void onDraw(Canvas canvas) {  
  36.         // TODO Auto-generated method stub  
  37.         super.onDraw(canvas);  
  38.         //myPaint = new Paint();  
  39.         myPaint.setColor(Color.RED);  
  40.         myPaint.setStyle(Style.FILL);  
  41.           
  42.         canvas.drawRect(new Rect(10,10,100,100), myPaint);  
  43.         myPaint.setColor(Color.WHITE);  
  44.         canvas.drawText(myString, 10100, myPaint);  
  45.     }  
  46.   
  47. }  

attrs.xml

Code:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <declare-styleable name="myView">  
  4.         <attr name="textColor" format="color"/>  
  5.         <attr name="textSize" format="dimension"/>  
  6.     </declare-styleable>  
  7. </resources>  

main.xml

Code:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:test="http://schemas.android.com/apk/res/com.adnroid.test"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     >  
  8. <TextView    
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="@string/hello"  
  12.     />  
  13. <com.adnroid.test.MyView  
  14.     android:layout_width="fill_parent"  
  15.     android:layout_height="fill_parent"  
  16.     test:textSize="10px"  
  17.     test:textColor="#fff"  
  18.     />  
  19. </LinearLayout>  

最终的效果

项目结构图:




你可能感兴趣的:(eclipse,android,xml,layout,encoding)