Android的UI美化

资源文件的使用

一, res中文件放置的类型

res/animator 存放属性动画 xml文件
res/anim 存放补间动画 xml文件
res/drawable 存储的是图片的文件 .xml文件
res/drawable-hdpi 图片
res/layout 布局
res/menu 菜单
res/values 存储的是键值队的xml文件
strings 字符串
dimens 尺寸
style 样式
colors 颜色
arrays 字符串数组

二, android中资源文件包括两个部分

1, 可以通过R直接引用 存放在 res 文件中
2, 不可以通过R直接引用 存放在 assets文件中 AssetManager

三, color 资源

values 中的color常量
1, 在res/vlaues/ 中定义一个colors.xml #f00

2, 引用 @color/red


drawable中的color常量
1, 在drawable中创建一个xml文件 标签以
2, 在标签中通过属性设置颜色: android:color = "@color/red"
3, 引用: @drawable/****

四, StateListDrawable 状态集合的图片 xml的文件

 
android:state_pressed 是否处于按下的状态
android:state_focused 是否获取到焦点的状态
android:state_checked 是否被勾选的状态

五, LayerDrawable 包含了Drawable的资源文件 按照数组的方式叠加文件

相框 进度条 星级评论

六, ShapeDrawable 可以在xml中做自定义的形状

可以绘制: 矩形 椭圆形 线 环形

七, ClipDrawable 代表从其他的图片上截取片段


八, TransitionDrawable 简单的动画 从一张图片过度到另一张图片 不会直接改变 是一帧一帧变化

九, levelDrawable 等级的


十, 样式 style (作用在View之上 , 把公共的属性提取)

位置: res/values/styles.xml中
引用 : @style/***
可以定义子类:
1, 前缀式: 父样式的名字在子样式名字的前面出现 格式: {父样式}. {子样式}
2, parent式: 设置属性 parent="父样式"

十一, 主题

Theme (作用在 Activity和Application上)

实例:

<textview android:background="@drawable/bg" android:id="@+id/tv" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Hello World!" android:textsize="40dp">
 
  <imagebutton android:background="@null" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/my_selector">
  <radiogroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" "="">
      <radiobutton android:button="@null" android:checked="true" android:drawableleft="@drawable/my_selector_rb" android:id="@+id/man" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="男">
      <radiobutton android:button="@null" android:drawableleft="@drawable/my_selector_rb" android:id="@+id/woman" android:layout_height="wrap_content" android:layout_marginleft="100dp" android:layout_width="wrap_content" android:text="女">
  </radiobutton></radiobutton>
  <edittext android:background="@drawable/my_select_edit" android:ems="10" android:layout_height="wrap_content" android:layout_width="wrap_content"></edittext></imagebutton></textview>

//<span style="font-family: Arial, Helvetica, sans-serif;">ImageButton</span>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/pressed" android:state_pressed="true">
    <item android:drawable="@drawable/normal" android:state_pressed="false">
</item></item></selector>

//<span style="font-family: Arial, Helvetica, sans-serif;">RadioGroup</span>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/home_active" android:state_checked="true"></item>
    <item android:drawable="@drawable/home_unactive" android:state_checked="false"></item>
</selector>

//<span style="font-family: Arial, Helvetica, sans-serif;">EditText</span>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/blue" android:state_focused="true">
   <item android:drawable="@drawable/white" android:state_focused="false">
</item></item></selector>

效果:

\


<imageview android:background="@drawable/my_layer_image" android:id="@+id/imageView1" android:layout_height="wrap_content" android:layout_width="wrap_content">
 
   <ratingbar android:id="@+id/ratingBar1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:numstars="5" android:progressdrawable="@drawable/my_layer_rating" android:rating="2" android:stepsize="0.5"></ratingbar></imageview>

qq相框

<!--?xml version="1.0" encoding="utf-8"?-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/back" android:id="@+id/back"></item>
 
    <item android:bottom="40dp" android:drawable="@drawable/qq" android:id="@+id/qq" android:left="15dp" android:right="30dp" android:top="20dp"></item>
</layer-list>

星级评论

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/unselect" android:id="@android:id/background"></item>
 
    <item android:drawable="@drawable/unselect" android:id="@android:id/secondaryProgress"></item>
 
    <item android:drawable="@drawable/selected" android:id="@android:id/progress"></item>
</layer-list>

效果:

 

\


public class ClipActivity extends Activity {
 
    private ImageView iv;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clip);
         
        iv = (ImageView) findViewById(R.id.imageView1);
    }
     
    public void clip(View v)
    {
        ClipDrawable drawable = (ClipDrawable)iv.getDrawable(); 
         
        int curLevel = drawable.getLevel();
         
        drawable.setLevel(curLevel + 1000);
         
    }
}


<imageview android:id="@+id/imageView1" android:layout_height="wrap_content" 
android:layout_width="wrap_content" android:src="@drawable/my_clip">
<button android:id="@+id/button1" android:layout_height="wrap_content" 
android:layout_width="wrap_content" android:οnclick="clip" android:text="点击截取"></button>
</imageview>

<!--?xml version="1.0" encoding="utf-8"?-->
<clip android:cliporientation="horizontal" android:drawable="@drawable/android1" android:gravity="left" xmlns:android="http://schemas.android.com/apk/res/android">
</clip>

效果:
\

\


public class TransitionActivity extends Activity {
 
    private ImageView iv;
     
    private TransitionDrawable drawable;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_transition);
         
        iv = (ImageView) findViewById(R.id.imageView1);
         
        drawable = (TransitionDrawable) iv.getDrawable();
    }
 
    public void open(View v)
    {
        drawable.startTransition(5000);
    }
     
    public void close(View v)
    {
        drawable.reverseTransition(5000);
         
    }
}


<imageview android:id="@+id/imageView1" android:layout_height="wrap_content" 
android:layout_width="wrap_content" android:src="@drawable/transition">
<button android:id="@+id/button1" android:layout_height="wrap_content" 
android:layout_width="wrap_content" android:οnclick="open" android:text="开灯">
</button>
<button android:id="@+id/button2" android:layout_height="wrap_content"
 android:layout_width="wrap_content" android:οnclick="close" android:text="关灯">
</button>
</imageview>

<transition xmlns:android="http://schemas.android.com/apk/res/android">
     
    <item android:drawable="@drawable/lamp_off"></item>
    <item android:drawable="@drawable/lamp_on"></item>
</transition>

效果:

\

public class LevelActivity extends Activity {
    private ImageView iv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_level);
 
        iv = (ImageView) findViewById(R.id.imageView1);
    }
 
    public void clickButton(View v) {
        switch (v.getId()) {
        case R.id.button1:
 
            iv.setImageLevel(1);
 
            break;
 
        case R.id.button2:
 
            iv.setImageLevel(2);
 
            break;
 
        case R.id.button3:
 
            iv.setImageLevel(3);
 
            break;
 
        case R.id.button4:
 
            iv.setImageLevel(4);
 
            break;
        }
    }
}


<imageview android:id="@+id/imageView1" android:layout_height="wrap_content" 
android:layout_width="wrap_content" android:src="@drawable/my_level">
   <linearlayout android:layout_height="wrap_content" android:layout_margintop="50dp" android:layout_width="wrap_content"><button 
android:id="@+id/button1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:οnclick="clickButton" android:text="wifi1">
</button>
<button android:id="@+id/button2" android:layout_height="wrap_content" 
android:layout_width="wrap_content" android:οnclick="clickButton" android:text="wifi2">
</button>
<button android:id="@+id/button3" android:layout_height="wrap_content" android:layout_width="wrap_content" 
android:οnclick="clickButton" android:text="wifi3">
</button>
<button android:id="@+id/button4" android:layout_height="wrap_content"
 android:layout_width="wrap_content" android:οnclick="clickButton" android:text="wifi4"></button>
</linearlayout>
</imageview>


<!--?xml version="1.0" encoding="utf-8"?-->
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/wifi1" android:maxlevel="1"></item>
    <item android:drawable="@drawable/wifi2" android:maxlevel="2"></item>
    <item android:drawable="@drawable/wifi3" android:maxlevel="3"></item>
    <item android:drawable="@drawable/wifi4" android:maxlevel="4"></item>
</level-list>


效果:

\


<button android:background="@drawable/my_shape_rectangle" android:id="@+id/button1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Button"></button><button android:background="@drawable/my_shape_rectangle02" android:id="@+id/button2" android:layout_height="wrap_content" android:layout_margintop="40dp" android:layout_width="wrap_content" android:text="Button"></button><button android:background="@drawable/my_shape_oval" android:id="@+id/button3" android:layout_height="wrap_content" android:layout_margintop="40dp" android:layout_width="wrap_content" android:text="Button"></button>

//my_shape_rectangle
<!--?xml version="1.0" encoding="utf-8"?-->
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
     
    <!-- 设置填充的颜色 -->
    <solid android:color="#0ff">
     
    <!-- 设置内边距 -->
    <padding android:bottom="15dp" android:left="15dp" android:right="15dp" android:top="15dp">
     
    <!-- 设置矩形的边 android:dashWidth="" 虚线的宽度   android:dashGap=""  虚线的间距-->
    <stroke android:color="#000000" android:dashgap="5dp" android:dashwidth="10dp" android:width="3dp">
 
</stroke></padding></solid></shape>

my_shape_rectangle02

<!--?xml version="1.0" encoding="utf-8"?-->
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">   
<!-- 设置渐变的颜色 -->
<gradient android:angle="45" android:endcolor="#00FFFF" android:startcolor="#FFFF00">
<!-- 设置圆角矩形 -->
<corners android:bottomleftradius="20dp" android:bottomrightradius="20dp" android:topleftradius="20dp" android:toprightradius="20dp">
</corners></gradient></shape>


//<span style="font-family: Arial, Helvetica, sans-serif;">my_shape_oval</span>

<!--?xml version="1.0" encoding="utf-8"?-->
<shape android:shape="oval" xmlns:android="http://schemas.android.com/apk/res/android">
     
    <gradient android:angle="45" android:endcolor="#0000FF" android:startcolor="#FF0000" android:type="sweep">
 
</gradient></shape>

效果图:

\


<button android:id="@+id/button1" android:text="Button" style="@style/ButtonStyle"></button><button android:id="@+id/button2" android:text="Button" style="@style/ButtonStyle.color"></button><button android:id="@+id/button3" android:text="Button" style="@style/Background"></button>

<resources xmlns:android="http://schemas.android.com/apk/res/android"><style name="AppBaseTheme" parent="android:Theme.Light" type="text/css"></style>
    <!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme" type="text/css"><!-- All customizations that are NOT specific to a particular API-level can go here. --></style>
    <!-- 自定义样式 --><style name="ButtonStyle" type="text/css"><item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:padding">30dp</item>
        <item name="android:textSize">25sp</item></style>
    <!-- 继承关系 --><style name="ButtonStyle.color" type="text/css"><item name="android:textColor">@color/red</item></style><style name="Background" parent="ButtonStyle" type="text/css"><item name="android:background">#00FFFF</item></style>
    <!-- 自定义主题 --><style name="MyTheme" parent="AppTheme" type="text/css"><item name="android:background">#FAF0E6</item></style>
</resources>


效果:

\



原文链接:http://www.2cto.com/kf/201610/553300.html











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值