drawableLayout的使用(转载讲的比较清晰的文章)

简介: 创建drawbler的布局文件初始化drawbler的列表响应drawable列表点击事件现在侧滑菜单使用很多,大都是通过SlidingMenu实现。现在也可以通过DrawerLayout创建抽屉布局frament_content.
创建drawbler的布局文件
初始化drawbler的列表
响应drawable列表点击事件


现在侧滑菜单使用很多,大都是通过SlidingMenu实现。现在也可以通过DrawerLayout

创建抽屉布局


frament_content.xml

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/textView"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:textSize="25sp" />  
  12.   
  13. </LinearLayout>  
activity_main.xml

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:id="@+id/drawer_layout"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <!-- The main content view -->  
  7.   
  8.     <FrameLayout  
  9.         android:id="@+id/content_frame"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="match_parent" >  
  12.     </FrameLayout>  
  13.   
  14.     <!-- The navigation view -->  
  15.   
  16.     <ListView  
  17.         android:id="@+id/left_drawer"  
  18.         android:layout_width="240dp"  
  19.         android:layout_height="match_parent"  
  20.         android:layout_gravity="start"  
  21.         android:background="#ffffcc"  
  22.         android:choiceMode="singleChoice"  
  23.         android:divider="@android:color/transparent"  
  24.         android:dividerHeight="0dp" >  
  25.     </ListView>  
  26.   
  27. </android.support.v4.widget.DrawerLayout>  

然后新建一个类继承Fragment类

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * ContentFragment.java 
  3.  * 版权所有(C) 2015 
  4.  * 创建者:cuiran 2015-1-3 下午3:25:44 
  5.  */  
  6. package com.cayden.drawerlayoutdemo;  
  7.   
  8. import android.app.Fragment;  
  9. import android.os.Bundle;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.ViewGroup;  
  13. import android.widget.TextView;  
  14.   
  15. /** 
  16.  * TODO  
  17.  * @author cuiran 
  18.  * @version 1.0.0 
  19.  */  
  20. public class ContentFragment extends Fragment {  
  21.   
  22.     private TextView textView;  
  23.       
  24.     @Override  
  25.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  26.             Bundle savedInstanceState) {  
  27.         View view = inflater.inflate(R.layout.fragment_content, container, false);  
  28.         textView = (TextView) view.findViewById(R.id.textView);  
  29.           
  30.         String text = getArguments().getString("text");  
  31.         textView.setText(text);  
  32.           
  33.         return view;  
  34.     }  
  35.       
  36. }  

完成Activity代码

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.cayden.drawerlayoutdemo;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import android.app.Activity;  
  6. import android.app.Fragment;  
  7. import android.app.FragmentManager;  
  8. import android.content.Intent;  
  9. import android.content.res.Configuration;  
  10. import android.net.Uri;  
  11. import android.os.Bundle;  
  12. import android.support.v4.app.ActionBarDrawerToggle;  
  13. import android.support.v4.widget.DrawerLayout;  
  14. import android.view.Menu;  
  15. import android.view.MenuItem;  
  16. import android.view.View;  
  17. import android.widget.AdapterView;  
  18. import android.widget.AdapterView.OnItemClickListener;  
  19. import android.widget.ArrayAdapter;  
  20. import android.widget.ListView;  
  21.   
  22.   
  23. public class MainActivity extends Activity implements OnItemClickListener {  
  24.   
  25.     private DrawerLayout mDrawerLayout;  
  26.     private ListView mDrawerList;  
  27.     private ArrayList<String> menuLists;  
  28.     private ArrayAdapter<String> adapter;  
  29.     private ActionBarDrawerToggle mDrawerToggle;  
  30.     private String mTitle;  
  31.   
  32.     @Override  
  33.     protected void onCreate(Bundle savedInstanceState) {  
  34.         super.onCreate(savedInstanceState);  
  35.         setContentView(R.layout.activity_main);  
  36.   
  37.         mTitle = (String) getTitle();  
  38.   
  39.         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);  
  40.         mDrawerList = (ListView) findViewById(R.id.left_drawer);  
  41.         menuLists = new ArrayList<String>();  
  42.         for (int i = 0; i < 5; i++)  
  43.             menuLists.add("菜单0" + i);  
  44.         adapter = new ArrayAdapter<String>(this,  
  45.                 android.R.layout.simple_list_item_1, menuLists);  
  46.         mDrawerList.setAdapter(adapter);  
  47.         mDrawerList.setOnItemClickListener(this);  
  48.   
  49.         mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,  
  50.                 R.drawable.ic_drawer, R.string.drawer_open,  
  51.                 R.string.drawer_close) {  
  52.             @Override  
  53.             public void onDrawerOpened(View drawerView) {  
  54.                 super.onDrawerOpened(drawerView);  
  55.                 getActionBar().setTitle("请选择");  
  56.                 invalidateOptionsMenu(); // Call onPrepareOptionsMenu()  
  57.             }  
  58.   
  59.             @Override  
  60.             public void onDrawerClosed(View drawerView) {  
  61.                 super.onDrawerClosed(drawerView);  
  62.                 getActionBar().setTitle(mTitle);  
  63.                 invalidateOptionsMenu();  
  64.             }  
  65.         };  
  66.         mDrawerLayout.setDrawerListener(mDrawerToggle);  
  67.           
  68.         //开启ActionBar上APP ICON的功能  
  69.         getActionBar().setDisplayHomeAsUpEnabled(true);  
  70.         getActionBar().setHomeButtonEnabled(true);  
  71.   
  72.     }  
  73.   
  74.     @Override  
  75.     public boolean onPrepareOptionsMenu(Menu menu) {  
  76.         boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);  
  77.         menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen);  
  78.         return super.onPrepareOptionsMenu(menu);  
  79.     }  
  80.   
  81.     @Override  
  82.     public boolean onCreateOptionsMenu(Menu menu) {  
  83.         // Inflate the menu; this adds items to the action bar if it is present.  
  84.         getMenuInflater().inflate(R.menu.main, menu);  
  85.         return true;  
  86.     }  
  87.   
  88.     @Override  
  89.     public boolean onOptionsItemSelected(MenuItem item) {  
  90.         //将ActionBar上的图标与Drawer结合起来  
  91.         if (mDrawerToggle.onOptionsItemSelected(item)){  
  92.             return true;  
  93.         }  
  94.         switch (item.getItemId()) {  
  95.         case R.id.action_websearch:  
  96.             Intent intent = new Intent();  
  97.             intent.setAction("android.intent.action.VIEW");  
  98.             Uri uri = Uri.parse("http://www.baidu.com");  
  99.             intent.setData(uri);  
  100.             startActivity(intent);  
  101.             break;  
  102.         }  
  103.         return super.onOptionsItemSelected(item);  
  104.     }  
  105.       
  106.     @Override  
  107.     protected void onPostCreate(Bundle savedInstanceState) {  
  108.         super.onPostCreate(savedInstanceState);  
  109.         //需要将ActionDrawerToggle与DrawerLayout的状态同步  
  110.         //将ActionBarDrawerToggle中的drawer图标,设置为ActionBar中的Home-Button的Icon  
  111.         mDrawerToggle.syncState();  
  112.     }  
  113.       
  114.     @Override  
  115.     public void onConfigurationChanged(Configuration newConfig) {  
  116.         super.onConfigurationChanged(newConfig);  
  117.         mDrawerToggle.onConfigurationChanged(newConfig);  
  118.     }  
  119.       
  120.       
  121.       
  122.       
  123.       
  124.       
  125.       
  126.   
  127.     @Override  
  128.     public void onItemClick(AdapterView<?> arg0, View arg1, int position,  
  129.             long arg3) {  
  130.         // 动态插入一个Fragment到FrameLayout当中  
  131.         Fragment contentFragment = new ContentFragment();  
  132.         Bundle args = new Bundle();  
  133.         args.putString("text", menuLists.get(position));  
  134.         contentFragment.setArguments(args);  
  135.   
  136.         FragmentManager fm = getFragmentManager();  
  137.         fm.beginTransaction().replace(R.id.content_frame, contentFragment)  
  138.                 .commit();  
  139.   
  140.         mDrawerLayout.closeDrawer(mDrawerList);  
  141.     }  
  142.   
  143. }  
     




相关文章
|
6月前
|
自然语言处理 Java 机器人
从细节出发:提高你的代码可读性
在编程的世界中,我们总是不断追求更高的性能,更优雅的设计,以及更复杂的特性。然而,我们不应忽视一个基本且重要的原则——代码的可读性。那么究竟何谓代码的可读性?顾名思义,代码可读性是指代码可理解的程度,是代码作者通过代码这个媒介,将需要表达的信息输出到读者脑中的能力。所以有的人说好的代码必然有清晰完整的注释,也有人说代码即注释,是代码简洁之道的最高境界,后者的观点飞哥持保留意见,毕竟真正能够做到代码即注释的有几人呢?
|
7月前
|
敏捷开发 Cloud Native 程序员
程序员面试中的逻辑推理:如何展示清晰的思维
程序员面试中的逻辑推理:如何展示清晰的思维
79 0
|
10月前
项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
70 0
|
10月前
|
前端开发
案例14-代码结构逻辑混乱,页面设计不美观
代码结构逻辑混乱,页面设计不美观
|
数据可视化
【设计篇】35 # 如何让可视化设计更加清晰?
【设计篇】35 # 如何让可视化设计更加清晰?
56 0
【设计篇】35 # 如何让可视化设计更加清晰?
|
设计模式 自然语言处理 JavaScript
|
自然语言处理 算法 JavaScript
重构的秘诀:消除重复,清晰意图
  11年前有幸阅读了《重构——改善既有代码的设计》第一版,当时是一口气读完的,书中的内容直接惊艳到我了。   今年读了该书的第二版,再次震撼到我了,并且这次的示例代码用的JavaScript,让我更有亲切感。   全书共有12章,前面5章是在讲解重构的原则、测试、代码的坏味道等内容,后面7章是各种经验和实践,全书的精髓所在。
|
存储
简洁明了的优秀UI设计原则(3)
简洁明了的优秀UI设计原则(3)
141 0
简洁明了的优秀UI设计原则(3)
|
缓存 前端开发 程序员
简洁明了的优秀UI设计原则(4)
简洁明了的优秀UI设计原则(4)
245 0
简洁明了的优秀UI设计原则(4)
简洁明了的优秀UI设计原则(1)
我们知道成功的页面设计不仅有很高的转化率,更便于用户使用;既能满足商业目标,又能为用户带来良好的体验。
266 0
简洁明了的优秀UI设计原则(1)