已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android模仿QQ的左右滑动切换界面和下拉更新的效果因为功能还没有完全实现,所以效果不是太好,不过呢,还是能实现,左右滑动时候切换界面和显示QQ好友列表的简单功能!好了,废话不多说了看看实现的过程吧!1.首先看看布局主布局main.xml1. 2. 6. 7. 14. 15. 21. 22. 23. 24. 29. 30. 31. 2,接着看看QQonline.xml 1. 2. 7. 8. 9. 17. 18. 3.接着看看下拉更新的布局pullrefresh.xml1. 2. 7. 8. 12. 13. 14. 4.下拉更新过程实现的布局refresh.xml 1. 2. 5. 6. 11. 12. 17. 18. 24. 25. 32. 33. 34. 40. 41. 47. 48. 54. 55. 56. 57. 5.下拉更新的列表显示的布局list_item.xml 1. 2. 7. 8. 14. 15. 22. 23. 6.接着看看还没有完善的QQ聊天信息的布局main3.xml 1. 2. 7. 8. 9. 10. 7.接着看看主活动的实现过程ViewPaper1Activity.java1. packagecom.wang; 2. 3. importjava.util.ArrayList; 4. 5. importandroid.app.ActivityGroup; 6. importandroid.content.Intent; 7. importandroid.graphics.Bitmap; 8. importandroid.graphics.BitmapFactory; 9. importandroid.graphics.drawable.BitmapDrawable; 10. importandroid.os.Bundle; 11. importandroid.support.v4.view.PagerAdapter; 12. importandroid.support.v4.view.ViewPager; 13. importandroid.support.v4.view.ViewPager.OnPageChangeListener; 14. importandroid.view.Gravity; 15. importandroid.view.View; 16. importandroid.view.Window; 17. importandroid.view.WindowManager; 18. importandroid.view.View.OnClickListener; 19. importandroid.widget.HorizontalScrollView; 20. importandroid.widget.LinearLayout; 21. importandroid.widget.RadioButton; 22. importandroid.widget.RadioGroup; 23. importandroid.widget.TextView; 24. importandroid.widget.LinearLayout.LayoutParams; 25. 26. publicclassViewPaper1ActivityextendsActivityGroupimplements 27. OnClickListener 28. privateRadioGroupradioGroup; 29. 30. privateStringarray=QQ空间,QQ,QQ消息; 31. privateLinearLayoutlinearLayout; 32. privateArrayListtextViews; 33. privateViewPagerviewPager; 34. privateArrayListpageViews; 35. privateHorizontalScrollViewhorizontalScrollView; 36. 37. /* 38. *初始化视图 39. * 40. * 41. */ 42. voidInItView() 43. /构造一个新的ArrayList实例对象 44. pageViews=newArrayList(); 45. /* 46. *开始一个新的活动中运行的组织。每一个活动你开始必须有一个独一无二的字符串标识与其相关联 47. */ 48. Viewview1=getLocalActivityManager().startActivity(main1, 49. newIntent(this,pullrefreshtest.class).getDecorView(); 50. Viewview2=getLocalActivityManager().startActivity(main2, 51. newIntent(this,QQonline.class).getDecorView(); 52. Viewview3=getLocalActivityManager().startActivity(main3, 53. newIntent(this,main3.class).getDecorView(); 54. /添加指定的对象在文章末尾的ArrayList。 55. pageViews.add(view1); 56. pageViews.add(view2); 57. pageViews.add(view3); 58. 59. 60. /* 61. *初始化话标题栏 62. */ 63. voidInItTitle() 64. /获取窗口管理器显示自定义窗口,去掉默认显示对象。得到1/3屏幕宽度 65. intwidth=getWindowManager().getDefaultDisplay().getWidth()/3; 66. 67. for(inti=0;iarray.length;i+) 68. /声明一个radioButton对象 69. RadioButtonradioButton=newRadioButton(this,null); 70. radioButton.setText(arrayi); 71. radioButton.setWidth(width); 72. radioButton.setHeight(70); 73. /集水平对齐文本和垂直重力的时候将会使用有额外的空间在TextView超出要求的文本本身 74. radioButton.setGravity(Gravity.CENTER); 75. /添加子视图。如果没有布局参数对孩子已经设置,默认参数对于这个ViewGroup上设置的孩子。 76. radioGroup.addView(radioButton); 77. 78. 79. 80. /* 81. *初始化文本 82. */ 83. voidinitTextView() 84. /声明一个ArrayList对象 85. textViews=newArrayList(); 86. /获取窗口管理器显示自定义窗口,去掉默认显示对象。得到1/3屏幕宽度 87. intwidth=getWindowManager().getDefaultDisplay().getWidth()/3; 88. intheight=60; 89. for(inti=0;iarray.length;i+) 90. TextViewtextView=newTextView(this); 91. textView.setText(arrayi); 92. textView.setTextSize(17); 93. textView.setWidth(width); 94. textView.setHeight(height-30); 95. textView.setGravity(Gravity.CENTER); 96. textView.setId(i); 97. /设置文本的监听事件 98. textView.setOnClickListener(this); 99. textViews.add(textView); 100. LinearLayout.LayoutParamslayoutParams=newLayoutParams( 101. LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 102. layoutParams.width=1; 103. layoutParams.height=height-40; 104. layoutParams.gravity=Gravity.CENTER; 105. /添加子视图。如果没有布局参数对孩子已经设置,默认参数对于这个ViewGroup上设置的孩子。 106. linearLayout.addView(textView); 107. 108. 109. 110. 111. /* 112. *选中后的处理 113. */ 114. publicvoidselect(intid) 115. for(inti=0;iarray.length;i+) 116. if(id=i) 117. /得到图片的资源 118. Bitmapbitmap=BitmapFactory.decodeResource(getResources(), 119. R.drawable.itembg); 120. /设置背景图 121. textViews.get(id).setBackgroundDrawable( 122. newBitmapDrawable(bitmap); 123. viewPager.setCurrentItem(i); 124. 125. 126. else 127. textViews.get(i).setBackgroundDrawable(newBitmapDrawable(); 128. 129. 130. 131. 132. Override 133. publicvoidonCreate(BundlesavedInstanceState) 134. super.onCreate(savedInstanceState); 135. /去除标题栏 136. this.requestWindowFeature(Window.FEATURE_NO_TITLE); 137. /取消状态栏,充满全屏 138. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 139. WindowManager.LayoutParams.FLAG_FULLSCREEN); 140. 141. setContentView(R.layout.main); 142. /实例化组件 143. linearLayout=(LinearLayout)findViewById(R.id.linearlayout); 144. viewPager=(ViewPager)findViewById(R.id.viewpaper); 145. horizontalScrollView=(HorizontalScrollView)findViewById(R.id.horizontalscrollview); 146. /调用方法实现 147. initTextView(); 148. select(0); 149. InItView(); 150. 151. viewPager.setAdapter(newPagerAdapter() 152. /得到数目 153. publicintgetCount() 154. returnpageViews.size(); 155. 156. 157. Override 158. publicbooleanisViewFromObject(Viewview,Objectobject) 159. returnview=object; 160. 161. 162. Override 163. publicintgetItemPosition(Objectobject) 164. /TODOAuto-generatedmethodstub 165. returnsuper.getItemPosition(object); 166. 167. 168. Override 169. publicvoiddestroyItem(Viewview,intid,Objectarg2) 170. /TODOAuto-generatedmethodstub 171. (ViewPager)view).removeView(pageViews.get(id); 172. 173. 174. /获取每一个item的id 175. Override 176. publicObjectinstantiateItem(Viewview,intid) 177. (ViewPager)view).addView(pageViews.get(id); 178. returnpageViews.get(id); 179. 180. 181. ); 182. /页面改变时候的监听事件 183. viewPager.setOnPageChangeListener(newOnPageChangeListener() 184. 185. Override 186. publicvoidonPageSelected(intarg0) 187. select(arg0); 188. 189. 190. Override 191. publicvoidonPageScrolled(intarg0,floatarg1,intarg2) 192. 193. 194. 195. Override 196. publicvoidonPageScrollStateChanged(intarg0) 197. 198. 199. ); 200. 201. 202. Override 203. publicvoidonClick(Viewv) 204. select(v.getId(); 205. 206. 207. 8.接着看看QQonline.java 的实现1. packagecom.wang; 2. 3. importandroid.app.Activity; 4. importandroid.os.Bundle; 5. importandroid.view.ContextMenu; 6. importandroid.view.View; 7. importandroid.view.Window; 8. importandroid.view.WindowManager; 9. importandroid.view.ContextMenu.ContextMenuInfo; 10. importandroid.widget.ExpandableListAdapter; 11. importandroid.widget.ExpandableListView; 12. importandroid.widget.Toast; 13. importandroid.widget.ExpandableListView.OnChildClickListener; 14. importandroid.widget.ExpandableListView.OnGroupClickListener; 15. importandroid.widget.ExpandableListView.OnGroupCollapseListener; 16. importandroid.widget.ExpandableListView.OnGroupExpandListener; 17. 18. publicclassQQonlineextendsActivity 19. /创建一个上下文菜单的方法 20. publicvoidonCreateContextMenu(ContextMenumenu,Viewv, 21. ContextMenuInfomenuInfo) 22. 23. super.onCreateContextMenu(menu,v,menuInfo); 24. 25. /一个垂直滚动的两级列表。取得菜单项 26. ExpandableListView.ExpandableListContextMenuInfoinfo=(ExpandableListView.ExpandableListContextMenuInfo)menuInfo; 27. /获得这个类型的位置 28. inttype=ExpandableListView 29. .getPackedPositionType(info.packedPosition); 30. /取得所在组的索引 31. intgroup=ExpandableListView 32. .getPackedPositionGroup(info.packedPosition); 33. /取得子菜单的索引 34. intchild=ExpandableListView 35. .getPackedPositionGroup(info.packedPosition); 36. 37. Toast.makeText(QQonline.this, 38. 类型=+type+分组:+group+子选项:+child, 39. Toast.LENGTH_LONG).show(); 40. 41. 42. 43. privateExpandableListVieweListView=null; 44. privateExpandableListAdapteradapter=null; 45. 46. Override 47. publicvoidonCreate(BundlesavedInstanceState) 48. 49. /去除标题, 50. this.requestWindowFeature(Window.FEATURE_NO_TITLE); 51. /取消状态栏,充满全屏 52. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 53. WindowManager.LayoutParams.FLAG_FULLSCREEN); 54. 55. super.onCreate(savedInstanceState); 56. super.setContentView(R.layout.qqonline); 57. 58. /实例化组件 59. this.eListView=(ExpandableListView)findViewById(R.id.elistview); 60. 61. /声明一个adapter对象 62. adapter=newmyExpendableadapler(this); 63. /设置适配器提供了数据 64. this.eListView.setAdapter(this.adapter); 65. 66. /注册一个上下文菜单显示给定的视图(多个视图可以显示上下文菜单)。 67. super.registerForContextMenu(this.eListView); 68. 69. /设置点击时候触发的事件1,子选项点击事件2。父选项单击事件3.分组打开事件4.分组关闭事件 70. this.eListView.setOnChildClickListener(newChildClickListener(); 71. this.eListView.setOnGroupClickListener(newGroupClickListener(); 72. this.eListView.setOnGroupExpandListener(newGroupExpandListener(); 73. this.eListView.setOnGroupCollapseListener(newGroupCollapseListener(); 74. 75. 76. 77. /1,子选项点击事件 78. privateclassChildClickListenerimplementsOnChildClickListener 79. 80. publicbooleanon
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年自来水公司个人年终工作总结范文(3篇)
- 2025年水厂个人总结样本(3篇)
- 2025年公安招聘辅警考试笔试题含答案
- 2025标准家居用品购销合同范本
- 2025年下半年哈尔滨市道外区事业单位招考11人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年哈尔滨市体彩中心招考雇员制工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林通化县事业单位招聘急需紧缺工作人员(含专项)17人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省松原市乾安县桑梓人才回归暨事业单位招聘(含专项招聘高校生)52人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年合肥市高新区招考社区工作者易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年厦门翔安区委组织部见习生招考易考易错模拟试题(共500题)试卷后附参考答案
- (正式版)DB65∕T 4935-2025 《医疗机构即时检验质量管理规程》
- 能源产业政策调整评估分析报告
- 2025至2030中国纳米铜粉市场销量预测与未来前景动态研究报告
- (正式版)DB65∕T 4330-2021 《公路融雪剂使用技术规范》
- 新产品转产流程标准操作手册
- 企业员工食堂营养菜单设计
- 国企合规培训课件
- 天津市2021-2023年中考满分作文48篇
- 早教入股协议书范本合同
- 公司租海外仓库合同范本
- 2025至2030中国原生铼金属市场发展模式及未来前景预测报告
评论
0/150
提交评论