仿制微信6.0界面<1>
2015-03-31 15:20
239 查看
【前言】
微信的界面简洁大方,最近搜到了一篇关于仿制微信界面的视频。视频连接在这里。但是这个视频讲解速度很快,为了方便后来人(也是方便自己),我将会将这个视频的基本要点记录一下。
【开发环境】
Eclipse +Android Developer Tools+小米note调试
【ActionBar的绘制】
1. 取消微信标题栏图标的显示
2. 改变OverflowButton按钮(即界面右上角的省略号)的图标为加号
3.由于在某些机型上自带菜单键,所以2中的OverflowButton有可能被隐藏,所以需要强行设置起显示
4.在OverflowButton展开之后,各个选项上是没有图标的。这里需要修改为显示图标。
【代码1 取消微信标题栏图标的显示】
【代码2 修改OverflowButton按钮的样式】
【代码3 强制显示OverflowButton按钮(即界面右上角的省略号)】
【代码4 修改OverflowButton中的图标进行显示】
微信的界面简洁大方,最近搜到了一篇关于仿制微信界面的视频。视频连接在这里。但是这个视频讲解速度很快,为了方便后来人(也是方便自己),我将会将这个视频的基本要点记录一下。
【开发环境】
Eclipse +Android Developer Tools+小米note调试
【ActionBar的绘制】
1. 取消微信标题栏图标的显示
2. 改变OverflowButton按钮(即界面右上角的省略号)的图标为加号
3.由于在某些机型上自带菜单键,所以2中的OverflowButton有可能被隐藏,所以需要强行设置起显示
4.在OverflowButton展开之后,各个选项上是没有图标的。这里需要修改为显示图标。
【代码1 取消微信标题栏图标的显示】
//这里比较容易,只需要在onCreate()方法当中添加函数调用即可 getActionBar().setDisplayShowHomeEnabled(false);
【代码2 修改OverflowButton按钮的样式】
//要想修改样式,首先应该考虑改变style //修改values-v14中的样式 <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- API 14 theme customizations can go here. --> <!-- <item name="android:actionOverflowButtonStyle"></item> --> <item name="android:actionOverflowButtonStyle"> @style/myChatActionOverflowButtonStyle </item> </style> <style name="myChatActionOverflowButtonStyle"> <item name="android:src">@drawable/actionbar_add_icon</item> </style>
【代码3 强制显示OverflowButton按钮(即界面右上角的省略号)】
//这里原作者采取了一种比较高级的方式————即反射 //关于反射这里简单引用一下 //http://www.cnblogs.com/bingoidea/archive/2009/06/21/1507889.html //在这里的作用,简单地说就是可以通过秘术来获取本身不可能访问地到的属性和方法 private void setOverflowButtonAlways() throws Exception{ //获取到ViewConfiutation ViewConfiguration configuration=ViewConfiguration.get(this); //获取field Field menuKey=ViewConfiguration.class.getDeclaredField("sHasPermanetMenuKey"); //使得这个私有属性可以被访问 menuKey.setAccessible(true); //该变configuration中这个field的值 menuKey.setBoolean(configuration, false); }
【代码4 修改OverflowButton中的图标进行显示】
//这里同代码3也是利用了Java的反射机制去修改系统默认设置 public boolean onMenuOpened(int featureId, Menu menu) { // TODO Auto-generated method stub if(featureId==Window.FEATURE_ACTION_BAR&&menu!=null){ if(menu.getClass().getSimpleName().equals("MenuBuilder")){ try { //同样先获取到需要调用的method Method m=menu.getClass(). getDeclaredMethod("setOptionalIconsVisible",Boolean.TYPE); //设为可访问 m.setAccessible(true); //调用方法 m.invoke(menu,true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return super.onMenuOpened(featureId, menu); }
相关文章推荐
- 仿制微信6.0界面<1>
- Fragment和ViewPager的结合——仿制微信界面6.0<二>
- 安卓版微信内置浏览器,<a href="tel:电话号码"></a> 这个链接失效,不能跳到拨号界面?
- Launcher2 界面修改 <1>
- MFC 学习之 界面美化<1>
- 网络编程笔记<1>
- 《医间道》读后感<1>
- 2011-12-13_<1>
- Ajax的异步通信引发的一个随机性问题<1>
- 数据库中SQL语句where 1=1及where 1<>1或1=0的妙用
- php学习日记<1>
- LINQ to Objects<1>
- php+js+mysql设计的仿webQQ-<1>邮箱验证
- Enterprise Library 5.0 研究 <1> 认识Enterprise Library 5.0
- 指尖上的代码[C语言版]-<1>
- java-mysql异常<Data truncation: Data too long for column 'name ' at row 1>讨论
- Quartz调度框架应用总结<1>
- hadoop "File /user/<user>/input/conf/slaves could only be replicated to 0 nodes, instead of 1"问题及解决办
- Linux界面切换:图形界面<——>字符界面
- Bash Shell中的> 、>> 、 1> 、 2> 、 2>>和 < 、 <<