Android开发-DrawerLayout实现侧滑菜单(1)-自定义ListView的实现&沉浸式状态栏

上一篇写了侧滑菜单的出现和一个简单的动画效果,今天就要记录一下,自定义ListView的实现了和沉浸式状态栏的实现,都是很简单的内容。先说一下自定义ListView;

(1)自定义的ListView只需要很简单的几步:

a.写一个布局文件定义每一个item的样式;

b.为自定义的样式写一个adapter;

c.为ListView分配adapter,初始化ListView;

d.添加一些简单的选中效果,我做的选中效果是默认状态下选中第一个item,选中某个item后侧滑菜单会收起,再次打开侧滑菜单的时候,还是上次选中的item被选中;

​下面是LiteView中Item的布局文件,可以看到,我的布局很简单就是一张图片和一个文字。

    

接下来是一个控制选中效果的selecter,结果并不是我想要的那种,但也还是贴上来吧,希望能得到大师的指点1、2;采用这种方式的问题是,只是选中的瞬间背景会变色,而不是我想要的那种选中了之后一直保持灰色的样子,最后我是通过在java代码中选中后改变样式的(这种方式会不会很蠢?)

下面是要实现自定义的Adapter了,这个要继承​BaseAdapter,实现其中的一些方法,最主要的是getView方法。比较简单的一些东西,应该都看的懂,以后自己看也不至于看不懂,不写注释啦~~~

​public class listViewAdapter extends BaseAdapter {

private ImageView image;

private TextView text;

private List> data;

private LayoutInflater layoutInflater;

private Context context;

public listViewAdapter(Context context,List> data){

//构造方法,data是要显示在ListView上的数据

this.context=context;

this.data=data;

this.layoutInflater=LayoutInflater.from(context);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return data.size();

}

@Override

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return data.get(arg0);

}

@Override

public long getItemId(int arg0) {

// TODO Auto-generated method stub

return arg0;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

// TODO Auto-generated method stub

//R.layout.list_item​这个Layout就是自定义的item的layout啦

arg1 = layoutInflater.inflate(R.layout.list_item, null);

image = (ImageView)arg1.findViewById(R.id.image);

text = (TextView)arg1.findViewById(R.id.title);

image.setImageResource((Integer)data.get(arg0).get("image"));

text.setText((String)data.get(arg0).get("title"));

return arg1;

}

}

之后就是要在activity中为这个ListView绑定适配器和赋值啦

....

//实例化ListView

leftMenu =(ListView)findViewById(R.id.left_menu);​

List> list=getMenuList();//list要保存的就是要显示在ListView

//上的数据了,getMenuList();是一个我写的获取数据的方法

leftMenu.setAdapter(new listViewAdapter(this, list));

.....

private List> getMenuList(){

List> list=new ArrayList>();

Map map0=new HashMap();

map0.put("image", R.drawable.sliding_allpractice_normal);

map0.put("title", "全部练习");

list.add(map0);

Map map1=new HashMap();

map1.put("image", R.drawable.sliding_everydaypractice_normal);

map1.put("title", "每日一练");

list.add(map1);

Map map2=new HashMap();

map2.put("image", R.drawable.sliding_mynote_normal);

map2.put("title", "我的笔记");

list.add(map2);

//此处省略部分代码。。。。

return list;

}

这样运行一下程序ListView就是可以有内容的了,写的比较省略,恐怕也就我自己可以看懂了吧。下面是给ListView添加响应事件了

我是实现了onItemClick这个接口

public class HomeActivity extends Activity implements OnItemClickListener{......}

//给leftMenu绑定响应方法​

leftMenu.setOnItemClickListener(this);

//实现响应方法,我是在这里实现选中的时候改变背景和选中图片还有颜色的!!!

//private View preView=null;//上一个选中的ListView

private int preNo=0;//上一个选中的ListView的序号

​​​​ps:有尖括号的地方会被吞掉,搞得我好心塞,明天转战csdn试试了。

关于沉浸式状态栏就是两行代码的事了

//透明状态栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明导航栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
​​ 然后在布局文件的红色导航栏上加上这两句

android:clipToPadding="true"

   android:fitsSystemWindows="true"


ps:好多代码都会被吞掉,好失落啊。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值