




已阅读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-2026学年小学心理健康人教版二年级上册-人教版
- 化肥厂原料验收登记制度
- 2025电子产品代理的销售合同书
- 江苏大学出版社《应用写作》说课稿-2023-2024学年中职中职专业课职业素养公共课程
- 建材买卖合同(卫浴洁具类)
- 教科版高中信息技术教案+教学设计
- 军训个人体会心得
- 2025年山西人民警察招聘考试申论题库含答案详解
- 2025年监理工程考试合同管理真题及答案
- 商场租赁合同范本及租赁保证金缴纳及退还流程
- Be-Safe-on-the-Way课件(省一等奖)
- 大学生心理健康优秀说课-比赛课件
- 高中英语词汇3500词(含音标)
- 凝结水泵解体检修课件
- TDTG提升机说明书
- 度基本公卫工作整改台账
- 大宗商品贸易业务风险管理指引
- 公务员第二批
- 阳宅风水培训讲义课件
- 1《材料科学基础》第一章晶体学基础课件
- 【VIP专享】第1模块-立业德为先(塘栖成校)课件
评论
0/150
提交评论