微信主界面开发知识点
来源:互联网 发布:截铃声软件 编辑:程序博客网 时间:2024/06/05 01:54
微信主页面开发weixin6.0版
主要功能点:
- 实现ActionBar:利用到反射知识,替换默认的overflowButton
- 实现viewPager
- 实现底部的tab:利用到自定义view的知识
- Activity回收
大概开发步骤思维导图:
1、实现ActionBar
- java反射机制,可以查看http://www.cnblogs.com/octobershiner/archive/2012/03/18/2404751.html
- 此功能中,主要是利用反射机制修改一些属性参数和方法的值,两个方法如下:
setChangeOverflowButtonAlways()方法就是为了让默认的overflowButton一直显示:
private void setChangeOverflowButtonAlways(){ try{ ViewConfiguration configuration = ViewConfiguration.get(this); Field menukey = configuration.getClass().getDeclaredField("sHasPermanentMenuKey");//获取MainActivity中的sHasPermanentMenuKey属性 menukey.setAccessible(true); //要强制系统显示menu图标,可以用反射的方法,把ViewConfiguration对象的sHasPermanentMenuKey属性设为false,让系统以为没有硬件菜单键 menukey.setBoolean(configuration, false); }catch(Exception ex){ ex.printStackTrace(); }}
onMenuOpened(int,Menu)设置menu显示”+”icon
//设置menu显示icon@Overridepublic boolean onMenuOpened(int featureId, Menu menu) { if(featureId == Window.FEATURE_ACTION_BAR && menu!=null){ if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { e.printStackTrace(); } } } return super.onMenuOpened(featureId, menu);}
2、实现ViewPager
- 就是之前ElaineMoMO小项目中的页面滑动实现基本一致,这里就不再重复了。
- 这次用到了Bundle传值,待会再说Bundle传值和intent传值的区别
3、实现底部tab(重点)
重点1:自定义view
- attr.xml
代码参考:
<?xml version="1.0" encoding="utf-8"?><resources><attr name="icon_" format="reference"></attr><attr name="color" format="color"></attr><attr name="text" format="string"></attr><attr name="text_size" format="dimension"/><declare-styleable name="ChangeColorWithText"> <attr name="icon_"/> <attr name="color"/> <attr name="text"/> <attr name="text_size"/></declare-styleable></resources>
- 布局文件中使用 eg: activity_main.xml
代码参考:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:自定义名="http://schemas.android.com/apk/res/com.xswx(包名)"...>... <LinearLayout ..> <!-- 微信tab --> <com.xswx.view.ChangeColorWithText ... 自定义名:icon_="@drawable/ic_menu_start_conversation" 自定义名:color="#ff45c01a" 自定义名:text="@string/app_name" 自定义名:text_size="12sp"> </com.xswx.view.ChangeColorWithText> </LinearLayout></LinearLayout>
- 构造方法中获取自定义属性 参考:com/xswx/view/ChangeColorWithText.java
- onMeasure: 绘制view大小
- onDraw:绘制view内容
个人在自定义View中,抽象理解一些对象可以方便自己的理解,例如:将Paint理解为画纸,Canvas理解为画笔,Bitmap理解为最终的画像
重点2:android.graphics.Xfermode使用
这里用到的是DST_IN混合模式,即呈现叠加部分的图
4、Activity回收
屏幕旋转会先销毁当前的Activity,再重建
- 解决办法:在manifest中配置固定呈现的方式:水平或垂直
- eg: android:screenOrientation = “portrait”
当应用长期处于后台时依旧有被杀死的可能
- 解决方法:可以实现Activity中的两个方法
- 1、onSaveInstanceState()
- 2、onRestoreInstanceState()
- 解决方法:可以实现Activity中的两个方法
总结:源码:https://github.com/ElaineYan489/WX6_0
0 0
- 微信主界面开发知识点
- 界面编程知识点~
- GMF 界面知识点
- android 界面知识点
- MATLAB界面知识点
- 图形化界面知识点
- Windows界面相关小知识点
- 手机卫士知识点二----主界面 gridview.
- Android界面编程的基本知识点
- qt写登录界面知识点总结
- Tips_开发知识点
- VC开发知识点
- oracle开发知识点
- Struts2开发知识点
- Android开发知识点总结
- Android开发知识点集锦
- Android开发知识点总结
- 开发常用小知识点
- 实现自己的ip命令
- 莫队算法
- Xml之pull解析
- 资产定价Model——随机变量因子
- 获取文件夹下最大的前n个文件
- 微信主界面开发知识点
- SDUT 2087 离散事件模拟-银行管理
- android报错——Unable to add window -- token null is not for an application
- Android编程之找不到布局文件
- dos和unix文件格式转换
- Light OJ 1116 Ekka Dokka
- 【HDU】-1052-Tian Ji -- The Horse Racing(贪心,双端队列)
- 文本编辑器讲解
- NSAttributedString——为Label设置富文本