Android:仿微信设置菜单
在Android应用开发中,应用设置界面是非常重要的()。如何设计一个好看的设置界面也很重要。于是在网上搜索一番,自己写写。
1.第一种方法:CornerListView
使用CornerListView的方法是,在布局中创建一个CornerListView。然后使用代码添加item,每个选项的布局使用另一个布局文件设置。
列表布局文件main_tab_setting.xml:
- <?xml 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”>
- <com.tianxia.app.floworld.view.CornerListView android:id=”@+id/setting_list”
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_margin=”10dip”
- android:background=”@drawable/app_list_corner_border”
- android:cacheColorHint=”#00000000″>
- </com.tianxia.app.floworld.view.CornerListView>
- </LinearLayout>
列表项布局文件main_tab_setting_list_item.xml:
- <?xml version=”1.0″ encoding=”utf-8″?>
- <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
- android:layout_width=”fill_parent”
- android:layout_height=”fill_parent”>
- <ImageView android:id=”@+id/setting_list_item_arrow”
- android:layout_alignParentRight=”true”
- android:layout_centerVertical=”true”
- android:layout_width=”wrap_content”
- android:layout_height=”fill_parent”
- android:layout_marginLeft=”15dip”
- android:layout_marginRight=”15dip”
- android:src=”@drawable/appreciate_tab_list_item_arrow_small”/>
- <TextView android:id=”@+id/setting_list_item_text”
- android:layout_toLeftOf=”@id/setting_list_item_arrow”
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:textSize=”16dip”
- android:textColor=”#000000″
- android:paddingTop=”10dip”
- android:paddingBottom=”10dip”
- android:paddingLeft=”10dip” />
- </RelativeLayout>
显示界面SettingTabActivity.java:
- public class SettingTabActivity extends Activity{
- private CornerListView cornerListView = null;
- private List<Map<String,String>> listData = null;
- private SimpleAdapter adapter = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main_tab_setting);
- cornerListView = (CornerListView)findViewById(R.id.setting_list);
- setListData();
- adapter = new SimpleAdapter(getApplicationContext(), listData, R.layout.main_tab_setting_list_item , new String[]{“text”}, new int[]{R.id.setting_list_item_text});
- cornerListView.setAdapter(adapter);
- }
- /**
- * 设置列表数据
- */
- private void setListData(){
- listData = new ArrayList<Map<String,String>>();
- Map<String,String> map = new HashMap<String, String>();
- map.put(“text”, “图库更新”);
- listData.add(map);
- map = new HashMap<String, String>();
- map.put(“text”, “收藏图片”);
- listData.add(map);
- map = new HashMap<String, String>();
- map.put(“text”, “下载目录”);
- listData.add(map);
- }
- }<span style=”font-family: ‘Microsoft YaHei’;”> </span>
使用这种方法界面效果图如下:
使用CornerListView要注意的事项:当列表太多需要滚动时,要注意scrollview与listview共存问题。这个问题的解决方法在我前一篇博文:Android:scrollview与listview共存中已经说到并提供了解决方法。而且如果使用这种做法,假设在代码中药更改item相对麻烦一点。
2.使用背景layout组合布局
创建四种圆角选项:单独选项、第一个选项、中间选项和最后一个选项。
第一个选项布局:
- <?xml version=”1.0″ encoding=”UTF-8″?>
- <selector
- xmlns:android=”http://schemas.android.com/apk/res/android”>
- <item android:state_enabled=”true” android:state_selected=”true” android:drawable=”@drawable/ic_preference_first_pressed” />
- <item android:state_enabled=”true” android:state_pressed=”true” android:drawable=”@drawable/ic_preference_first_pressed” />
- <item android:drawable=”@drawable/ic_preference_first_normal” />
- </selector>
中间选项布局:
- <?xml version=”1.0″ encoding=”UTF-8″?>
- <selector
- xmlns:android=”http://schemas.android.com/apk/res/android”>
- <item android:state_enabled=”true” android:state_selected=”true” android:drawable=”@drawable/ic_preference_pressed” />
- <item android:state_enabled=”true” android:state_pressed=”true” android:drawable=”@drawable/ic_preference_pressed” />
- <item android:drawable=”@drawable/ic_preference_normal” />
- </selector>
最后一个选项:
- <?xml version=”1.0″ encoding=”UTF-8″?>
- <selector
- xmlns:android=”http://schemas.android.com/apk/res/android”>
- <item android:state_enabled=”true” android:state_selected=”true” android:drawable=”@drawable/ic_preference_last_pressed” />
- <item android:state_enabled=”true” android:state_pressed=”true” android:drawable=”@drawable/ic_preference_last_pressed” />
- <item android:drawable=”@drawable/ic_preference_last_normal” />
- </selector>
单独选项:
- <?xml version=”1.0″ encoding=”UTF-8″?>
- <selector
- xmlns:android=”http://schemas.android.com/apk/res/android”>
- <item android:state_enabled=”true” android:state_selected=”true” android:drawable=”@drawable/ic_preference_single_pressed” />
- <item android:state_enabled=”true” android:state_pressed=”true” android:drawable=”@drawable/ic_preference_single_pressed” />
- <item android:drawable=”@drawable/ic_preference_single_normal” />
- </selector>
整体布局文件:
- <?xml version=”1.0″ encoding=”utf-8″?>
- <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
- android:layout_width=”fill_parent”
- android:layout_height=”fill_parent”
- android:background=”#eee”
- android:orientation=”vertical” >
- <LinearLayout
- android:layout_width=”fill_parent”
- android:layout_height=”45dp”
- android:id=”@+id/title”
- android:background=”@drawable/title_bar”
- android:gravity=”center_horizontal|center_vertical”>
- <TextView
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:text=”设置”
- android:textSize=”20sp”
- android:textColor=”#ffffff” />
- </LinearLayout>
- <ScrollView
- android:layout_width=”fill_parent”
- android:layout_height=”fill_parent”
- android:scrollbarStyle=”outsideOverlay”
- >
- <LinearLayout
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:orientation=”vertical” >
- <!– *********************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayoutT”
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- >
- <TextView
- android:id=”@+id/StxtViewT”
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”2dp”
- android:text=””
- android:textSize=”2sp”
- android:textColor=”#000″ />
- </RelativeLayout>
- <!– *********************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout1″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_single_item” >
- <TextView
- android:id=”@+id/StxtView1″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”名片”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView1″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <!– *********************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout2″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_marginTop=”14dp”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_first_item” >
- <TextView
- android:id=”@+id/StxtView2″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”背景”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView2″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout3″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_last_item” >
- <TextView
- android:id=”@+id/StxtView3″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”字体大小”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView3″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <!– *********************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout4″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_marginTop=”14dp”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_first_item” >
- <TextView
- android:id=”@+id/StxtView4″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”听筒播放”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView4″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/brand_unsetting_icon” />
- </RelativeLayout>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout5″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_last_item” >
- <TextView
- android:id=”@+id/StxtView5″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”自动播放”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView5″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/brand_unsetting_icon” />
- </RelativeLayout>
- <!– *********************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout6″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_marginTop=”14dp”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_single_item” >
- <TextView
- android:id=”@+id/StxtView6″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”隐私设置”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView6″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <!– *********************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout7″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_marginTop=”14dp”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_first_item” >
- <TextView
- android:id=”@+id/StxtView7″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”清空微日记”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView7″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout8″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_item” >
- <TextView
- android:id=”@+id/StxtView8″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”初始化设置”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView8″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout9″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_last_item” >
- <TextView
- android:id=”@+id/StxtView9″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”初始化应用程序”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView9″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <!– ******************************************************************** –>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout10″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_marginTop=”14dp”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_first_item” >
- <TextView
- android:id=”@+id/StxtView10″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”帮助与反馈”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView10″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <RelativeLayout
- android:id=”@+id/SrelativeLayout11″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:gravity=”center_vertical”
- android:clickable=”true”
- android:background=”@drawable/preference_last_item” >
- <TextView
- android:id=”@+id/StxtView11″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:padding=”8dp”
- android:text=”关于”
- android:textSize=”20sp”
- android:textColor=”#000″ />
- <ImageView
- android:id=”@+id/SimageView11″
- android:layout_width=”wrap_content”
- android:layout_height=”wrap_content”
- android:scaleType=”matrix”
- android:layout_centerVertical=”true”
- android:layout_alignParentRight=”true”
- android:src=”@drawable/mm_submenu” />
- </RelativeLayout>
- <Button
- android:id=”@+id/Sbtn_close”
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”
- android:layout_marginTop=”10dp”
- android:layout_marginBottom=”10dp”
- android:layout_marginLeft=”12dp”
- android:layout_marginRight=”12dp”
- android:padding=”4dp”
- android:text=”退出登录”
- android:textSize=”15sp”
- android:textColor=”#fff”
- android:gravity=”center”
- android:background=”@drawable/btn_style_red”
- android:onClick=”exit_settings”
- />
- </LinearLayout>
- </ScrollView>
- </LinearLayout>
这种方法效果图:
具体代码参考:http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html http://www.apkbus.com/forum.php?mod=viewthread&tid=70342