当前位置: 首页 > news >正文

Android之SlideMenu实例Demo

年末加班基本上一周都没什么时候回家写代码,回到家就想睡觉,周末难得有时间写个博客,上次写了一篇关于SlideMenu开源项目的导入问题,这次主要讲讲使用的问题,SlideMenu应用的广泛程度就不用说了,基本上是App的标配,关于SlideMenu的各种使用方法有很多,网上各种Demo也很多,想来想去还是按照自己本身的实战方式去写写吧,走过的坑希望大家基本上不会遇到,开始正题:

基础布局

写布局文件之前先看下最终的效果图,昨天红色就是滑动出现的区域,右边的图片由左边的事件触发:

activity_main.xml中的布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<FrameLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     xmlns:tools= "http://schemas.android.com/tools"
     android:id= "@+id/main_frame"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     android:paddingBottom= "@dimen/activity_vertical_margin"
     android:paddingLeft= "@dimen/activity_horizontal_margin"
     android:paddingRight= "@dimen/activity_horizontal_margin"
     android:paddingTop= "@dimen/activity_vertical_margin"
     tools:context= "com.example.slidemenu.MainActivity"  >
 
     <ListView
         android:id= "@+id/list_base"
         android:layout_width= "match_parent"
         android:layout_height= "match_parent"  >
     </ListView>
 
</FrameLayout>

 menu_frame.xml中主要是用于右边显示布局,单独写出来一个是为了方便以后的替换:

1
2
3
4
5
6
7
8
<?xml version= "1.0"  encoding= "utf-8" ?>
<FrameLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     android:id= "@+id/menu_frame" >
     
 
</FrameLayout>

  slide_menu.xml中主要用来显示SlideMenu中的数据,最后通过代码区

1
2
3
4
5
6
7
<?xml version= "1.0"  encoding= "utf-8" ?>
<ListView xmlns:android= "http://schemas.android.com/apk/res/android"
     android:id= "@+id/list_slide"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent" >
 
</ListView>

  list_item中的布局文件,之后自定义的Adapter会用到:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version= "1.0"  encoding= "utf-8" ?>
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     android:orientation= "horizontal"  >
     
     <ImageView
         android:id= "@+id/list_image"
        android:layout_width= "wrap_content"
        android:layout_height= "wrap_content" />
    
 
</LinearLayout>

实例Demo

首先MainActivity导入开源项目包(如果导入有问题可以参考本人的上一篇文章)之后继承SlidingFragmentActivity;

自定义 实例化Slide_Menu.xml的类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public  class  MyMenuFragment  extends  Fragment  implements  OnItemClickListener {
 
     private  View view;
     private  String[] listArrStrings= new  String[]{ "鹰" , " 鹭" , "火烈鸟" };
     @Override
     public  void  onCreate(Bundle savedInstanceState) {
         // TODO Auto-generated method stub
         super .onCreate(savedInstanceState);
     }
 
     @Override
     public  View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
         // TODO Auto-generated method stub
         view=LayoutInflater.from(getActivity()).inflate(R.layout.slide_menu,  null );
         return  view;
     }
 
     @Override
     public  void  onActivityCreated(Bundle savedInstanceState) {
         // TODO Auto-generated method stub
         super .onActivityCreated(savedInstanceState);
         ListView  listView=(ListView) view.findViewById(R.id.list_slide);
         listView.setAdapter( new  ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, listArrStrings));
         listView.setOnItemClickListener( this );
     }
 
     
     @Override
     public  void  onItemClick(AdapterView<?> parent, View view,  int  position,
             long  id) {
         // TODO Auto-generated method stub
 
         if (getActivity()  instanceof  MainActivity){
             ((MainActivity)getActivity()).changeImage(position);
         }
     }
 
}

  onCreate中方法中调用:

1
2
3
4
5
6
7
8
9
10
11
12
super .onCreate(savedInstanceState);
     setBehindContentView(R.layout.menu_frame);
     setContentView(R.layout.activity_main);
     slidingMenu = getSlidingMenu();
     slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
     slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
     slidingMenu.setBehindWidth( 80 );
     
  
     MyMenuFragment menuFragment =  new  MyMenuFragment();
     getSupportFragmentManager().beginTransaction()
             .replace(R.id.menu_frame, menuFragment,  "MyMenu" ).commit();

  MyMenuFragment中如果回调MainActivity调用的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public   void   changeImage( int  index){
     ListView view=(ListView) findViewById(R.id.list_base);
     switch  (index) {
     case  0 :
         view.setAdapter( new  MyListAdapter( this , R.drawable.eagle));
         break ;
     case  1 :
         view.setAdapter( new  MyListAdapter( this , R.drawable.heron));
         break ;
     case  2 :
         view.setAdapter( new  MyListAdapter( this , R.drawable.flamingo));
         break ;
     default :
         break ;
     }
}

  最后是自定义的MyListAdapter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public  class  MyListAdapter  extends  BaseAdapter{
 
     private  int  resourceID;
     private  LayoutInflater inflater;
    public  MyListAdapter(Context context, int  resId){
        inflater=LayoutInflater.from(context);
        resourceID=resId;
    }
    @Override
    public  int  getCount() {
        // TODO Auto-generated method stub
        return  3 ;
    }
 
    @Override
    public  Object getItem( int  position) {
        // TODO Auto-generated method stub
        return  null ;
    }
 
    @Override
    public  long  getItemId( int  position) {
        // TODO Auto-generated method stub
        return  0 ;
    }
 
    @Override
    public  View getView( int  position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view= null ;
        if  (convertView== null ) {
          view=inflater.inflate(R.layout.list_item, null );
        } else {
            view=convertView;
        }
        ImageView imageView=(ImageView) view.findViewById(R.id.list_image);
        imageView.setImageResource(resourceID);
        return  view;
    }
      
  }

本人只是设置左滑动,其实还是设置右滑动,设置左右滑动通过setSecondaryMenu设置;

 最后看下火烈鸟吧,老外还是比较爱护动物的,以上都是开源项目SlideMenu中的图片:

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4148837.html,如需转载请自行联系原作者

相关文章:

  • Linux SPI总线和设备驱动架构之一:系统概述【转】
  • 一些服务器的常用命令的基本操作
  • 38.IntelliJ IDEA中创建Web聚合项目(Maven多模块项目)
  • window7 虚拟机安装
  • hacmp环境下更改ip地址
  • Citrix XenApp策略与AD组策略的整合
  • EIGRP特点包括:
  • 使用JConsole监控
  • C#去除HTML标签
  • 由VMware Workstation 6.5所想到的
  • 尘归尘,土归土——业务归业务,技术归技术。
  • 日志系统
  • 3.1 salt 语法
  • Nginx服务整理
  • Jira 6.3.6使用openldap进行认证——方法二
  • Java知识点总结(JavaIO-打印流)
  • JS题目及答案整理
  • REST架构的思考
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 对象引论
  • 设计模式走一遍---观察者模式
  • 译有关态射的一切
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #define、const、typedef的差别
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十)T检验-第一部分
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)Mysql的优化设置
  • (转)负载均衡,回话保持,cookie
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .net framework4与其client profile版本的区别
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET下的多线程编程—1-线程机制概述
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [20190416]完善shared latch测试脚本2.txt
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [AIGC] Spring Interceptor 拦截器详解
  • [Apio2012]dispatching 左偏树