zoukankan      html  css  js  c++  java
  • Android中UI设计的一些技巧!!!

      

    出处:http://blog.csdn.net/android_tutor/article/details/5995759

    大家好,今天给大家分享的是Android中UI设计的一些技巧,本节内容主要有两点:一是Android按钮(Button)的UI设计,二是:ListView以及GridView的UI设计。

    按钮的状态:

    我们一般搞UI设计,按钮通常有三个状态:normal(正常状态);focus(焦点状态),pressed(按下状态)。如下图所示:

                                                                     

    我们会在res/drawable目录下定义一个资源文件,比如我们本例中要用到的handle.xml,在里面定义三种状态,每种状态对应一张图片:

    代码如下:

    [java] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
    3.     <item android:state_window_focused="false"  android:drawable="@drawable/handle_normal" />  
    4.     <item android:state_focused="true" android:drawable="@drawable/handle_focused" />  
    5.     <item android:state_pressed="true" android:drawable="@drawable/handle_pressed" />  
    6. </selector>  

    而我们使用这个资源文件的用法只需要引用drawable里的资源文件(android:background="@drawable/handle")代码如下:

    [java] view plaincopy
     
    1. <Button    
    2.     android:id="@+id/handle"    
    3.     android:layout_width="wrap_content"    
    4.     android:layout_height="fill_parent"    
    5.     android:background="@drawable/handle"    
    6. />   

    Android中的层:

    看过《盗梦空间》的人都知道,梦境有多少层,而Android中也有层次之分,在Android中第一层"梦境",我们可以认为是壁纸。第二层就是应用的Activity,第三层就是放在Activity上的容器(ViewGroup以及它的子类FrameLayout,LinearLayout等布局对象),当然容器中还可以放容器,你也可以放到N层(最多放多少我还没验证过),总之最后一层就是那些继承于View的控件了(诸如,Button,TextView等.)

    而ListView以及GridView中UI是怎么设计的呢,下面我们看一下效果图:

    上图是一个ListView的效果图,正常状态下是白色背景黑色字体,当我们点击一列时会出现黄色背景。这一效果是如何做到的呢?

    ListView单元格显示的内容其实是我们事先定义在Layout目录下的一个布局文件,从这个效果来看,我们可以看出它一共有三个“层”

    第一层容器(LinearLayout) 背景色为白色:

    第二层也是容器(LinearLayout)当按下时,背景色为黄色,把第一层挡住(具体做法可以参照按钮):

    第三层是控件(TextView)。

    实例 :

    上面说了一些,有些人肯定会云里雾里,所以我们直接来个实例,实例做完后,再看一下,效果会更好,大家按照步骤跟我来:

    第一步:首先准备素材,准备三个按钮,以及ListView的背景图(上面三个按钮已经有了,下面我只贴一个ListView背景图片):

    第二步:新建一个Android工程,命名为UIDemo.目录结构如下图所示:

    第三步:在res目录下新建一个drawable文件夹,定义两个资源文件一个是handle.xml另一个为listview_selected.xml,其中handle.xml代码已经在上面贴出,listview_selected.xml代码如下:

    [java] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
    3.     <item android:state_pressed="true" android:drawable="@drawable/list_selector_background_pressed" />  
    4. </selector>  

    第四步:修改main.xml布局文件,这里我用到了SliddingDrawer控件,代码如下:

    [java] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7.  <SlidingDrawer    
    8.      android:id="@+id/slidingdrawer"    
    9.      android:layout_width="fill_parent"    
    10.      android:layout_height="fill_parent"    
    11.      android:orientation="horizontal"    
    12.      android:handle="@+id/handle"    
    13.      android:content="@+id/content">    
    14.       <Button    
    15.              android:id="@+id/handle"    
    16.              android:layout_width="wrap_content"    
    17.              android:layout_height="fill_parent"    
    18.              android:background="@drawable/handle"    
    19.         />   
    20.        <ListView  
    21.              android:id="@+id/content"   
    22.              android:layout_width="fill_parent"    
    23.              android:layout_height="wrap_content"   
    24.        />  
    25.  </SlidingDrawer>  
    26. </LinearLayout>  

    我们这里用到了ListView控件,而我们ListView控件显示的内容我事先在layout目录下定义两个TextView,命名为listview_layout.xml,代码如下(这里有三层哦!):

    [java] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     android:background="#ffffff"      
    7.     >    
    8.     <LinearLayout  
    9.         android:orientation="vertical"  
    10.         android:layout_width="fill_parent"  
    11.         android:layout_height="fill_parent"  
    12.         android:background="@drawable/listview_selected"  
    13.         android:padding="6px"  
    14.     >  
    15.     <TextView  
    16.         android:id="@+id/bookname"    
    17.         android:layout_width="fill_parent"   
    18.         android:layout_height="wrap_content"   
    19.         android:textSize="20px"  
    20.         android:textColor="#000000"  
    21.         />  
    22.     <TextView  
    23.         android:id="@+id/author"    
    24.         android:layout_width="fill_parent"   
    25.         android:layout_height="wrap_content"   
    26.         android:textSize="16px"  
    27.         android:textColor="#000000"  
    28.         />  
    29.         </LinearLayout>  
    30. </LinearLayout>  

    第五步:修改主核心程序UIDemo.java,代码如下:

    [java] view plaincopy
     
    1. package com.tutor.uidemo;  
    2. import android.app.Activity;  
    3. import android.os.Bundle;  
    4. import android.view.LayoutInflater;  
    5. import android.view.View;  
    6. import android.view.ViewGroup;  
    7. import android.widget.BaseAdapter;  
    8. import android.widget.ListView;  
    9. import android.widget.TextView;  
    10. public class UIDemo extends Activity {  
    11.      
    12.     private ListView mListView;  
    13.     @Override  
    14.     public void onCreate(Bundle savedInstanceState) {  
    15.         super.onCreate(savedInstanceState);  
    16.         setContentView(R.layout.main);  
    17.           
    18.         setupViews();  
    19.     }  
    20.        
    21.     private void setupViews(){  
    22.         mListView = (ListView)findViewById(R.id.content);  
    23.         mListView.setAdapter(new ListViewAdapter());  
    24.     }  
    25.          
    26.     private class ListViewAdapter extends BaseAdapter{  
    27.         //这里返回10行,ListView有多少行取决于getCount()方法  
    28.         public int getCount() {  
    29.             return 10;  
    30.         }  
    31.         public Object getItem(int arg0) {  
    32.             return null;  
    33.         }  
    34.         public long getItemId(int arg0) {  
    35.             return 0;  
    36.         }  
    37.         public View getView(int position, View v, ViewGroup parent) {  
    38.               
    39.             final LayoutInflater inflater = LayoutInflater.from(getApplicationContext());  
    40.               
    41.             if(v == null){  
    42.                 v = inflater.inflate(R.layout.listview_layout, null);  
    43.             }             
    44.             TextView mBookName = (TextView)v.findViewById(R.id.bookname);  
    45.             TextView mBookAuthor = (TextView)v.findViewById(R.id.author);  
    46.               
    47.             mBookName.setText("Android傻瓜教程" + position);  
    48.             mBookAuthor.setText("Frankiewei" + position);  
    49.             return v;  
    50.         }  
    51.           
    52.     }  
    53. }  

    第六步:运行上述工程,查看效果:

    运行效果1:

    点击按钮效果2:

    ListView正常效果3:

    ListView点击效果4:

  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/android-blogs/p/4867306.html
Copyright © 2011-2022 走看看