黑马程序员android常用控件_第1页
黑马程序员android常用控件_第2页
黑马程序员android常用控件_第3页
黑马程序员android常用控件_第4页
黑马程序员android常用控件_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可以指定layout_weightlayout_weigthlayout_weightlayout_widthheight=”0dp”配合使用,指定的控件所占宽/高ExpandableListViewListViewListView;ListView类似;AdapterpublicViewgetGroupView()viewview :返回某个位置对应的孩子的view对象view布局 //父publicclassExpandParentInfo{//父publicclassExpandParentInfo{privateStringname;privateintid;privateList<ExpandChildrenInfo>}//子publicclassExpandChildrenInfoprivateintprivateStringprivateString}//子 publicList<ExpandParentInfo>queryExpandData()List<ExpandParentInfo>List<ExpandParentInfo>list=newArrayList<ExpandParentInfo>(10);Databasedb=getDB();Cursorc=db.rawQuery("SELECTidx,nameFROMclasslist",null);while(c.moveToNext()){ExpandParentInfoparentnewExpandParentInfo(c.getInt(0c.getString(1));getChildren(parent,db); //获取还在}close(c,return}@paramprivatevoidgetChildren(ExpandParentInfoparent, Databasedb){List<ExpandChildrenInfo>list=newArrayList<ExpandChildrenInfo>(10);Stringsql="SELECT_id,number,nameFROMtable"+parent.getId();Cursorc=db.rawQuery(sql,null);while(c.moveToNext())ExpandChildrenInfoinfo=newExpandChildrenInfo(c.getInt(0),c.getString(2),}this.close(c,null);}List<ExpandParentInfo>List<ExpandParentInfo>datas=dao.queryExpandData();ExpandableListViewelv=(ExpandableListView) elv.setAdapter(newBaseExpandableListAdapter(){publicViewgetGroupView(intgroupPosition,booleani panded,ViewconvertView,ViewGroupparent){TextViewtv=newTextView(getApplicationContext()); "+datas.get(groupPosition).getName());return}publicViewgetChildView(intgroupPosition,intchildPosition,isLastChild,ViewconvertView,ViewGroupparent)TextViewtv=newTextView(getApplicationContext());ExpandChildrenInfoinfo=return"+info.getName()+"+}@param publicintgetChildrenCount(intgroupPosition)return}publicintgetGroupCount()return}publicbooleanisChildSelectable(intgroupPosition,intchildPosition)return}publicbooleanhasStableIds()return}publiclonggetGroupId(intgroupPosition)return}publicObjectgetGroup(intgroupPosition)return}publiclonggetChildId(intgroupPosition,intchildPosition)return}publicObjectgetChild(intgroupPosition,intchildPosition)return}ListViewfastScrollEnabledprivateBaseAdapter*privateBaseAdapter*privateHandlerhandler=newHandler()//数据适配器publicvoidhandleMessage(android.os.Messagemsg){ //加载进度条if(adapter==null){ lv_call_sms_safe=(ListView)adapteradapter=newMyCallSmsSafeAdapter();}else //复用旧的数据适配器,通知数据}privatevoidfillData(){ //显示加载//dao查询可能是耗时的操作,在新 newThread()publicvoidrun()if(numbers!=null){numbers.addAll(dao.queryPartBlackNumbers(startIndex,maxNumber));}elsenumbers=dao.queryPartBlackNumbers(startIndex,} }privateclassMyCallSmsSafeAdapterextendsBaseAdapterpublicintgetCount()1.listView展示的条数return}publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent)2.具体显示的条目Viewview=ViewHolderholder Viewif(convertViewnull&&convertViewinstanceofRelativeLayoutLog.i(TAG,"历史缓存对象可复用:"+position);view=holderViewHolder //取出ViewHolder象}elseLog.i(TAGView1.复用历史缓存view对象减少布局文件转化成view2.查找孩子也是个耗时的操作,在创建view把孩子 给存起TextViewtv_number=(TextView)view.findViewById(R.id.tv_number);TextViewtv_mode=(TextView)view.findViewById(R.id.tv_mode);ImageViewiv_remove=(ImageView)view.findViewById(R.id.iv_remove);holder=newViewHolder(); View对象容器,保存

holder.tv_mode=tv_mode;holder.tv_number=tv_number;holder.iv_remove=iv_remove; //将holder}BlackNumberblackNum=numbers.get(position);BlackNumberblackNum=numbers.get(position);holder.iv_remove.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv)BlackNumbertempNum=numbers.get(position);除}if(blackNum.getMode().equals(BlackNumberDao.MODE )){ }return}publicObjectgetItem(intposition)return}publiclonggetItemId(intposition)4.获取选中条目的return}publicbooleanisEnabled(intposition)//return}}ViewListViewView中的孩子,定义成static/**/**View对象容器,用来保存ListView条目的View中的孩 staticclassViewHolder{TextViewtv_number;TextViewtv_mode;ImageViewiv_remove;}ListView3 privatevoidinitListViewScrollListener(){lv_call_sms_safe.setOnScrollListener(newOnScrollListener(){//当滚动状体发生变化的时候调用的方法(滚动状态:1.手指按下移动;2.惯性滚动即publicvoidonScrollStateChanged(AbsListViewview,intscrollState)switch(scrollState)case //在静止状态下关心最后一个可见的条目如果最后一个可见条目就是数据适配器里面的最后一个,加载 intposition=intsize=if(position==size-1)if(startIndextotalCount }startIndex+= }casecase态}}//当listviewpublicvoidonScroll(AbsListViewview,intfirstVisibleItem,intinttotalItemCount)}}将中所有安装的应用分割成2个集合一个存放用户安装的一个存放系统自带的ListViewgetCount方法,返回的条目的个数为用户的+系统自ListView的滚动,动态设置分类标题;具**填充数据privatevoidfillData()newThread()publicvoidrun()appInfos=userAppInfos=newsystemAppInfos=new//系统的for(AppInfoappInfo:appInfos)if(appInfo.isUserApp())}//更新界面操作,Activity中的方法,它是运行在主 的,原理是利用runOnUiThread(newRunnable()publicvoidrun()if(adapter==null)adapter=newAppManagerAdapter();}else}}ListViewprivateclassAppManagerAdapterextendsBaseAdapter{publicintgetCount()returnuserAppInfos.size()+systemAppInfos.size()+}publicViewgetView(intposition,ViewconvertView,ViewGroupparent)1.提示标题条目==if(position0 //返回TextViewTextViewtv=newTextView(getApplicationContext());tv.setTextuserAppInfos.sizereturn}if(position==userAppInfos.size()+1){ //返回TextView对TextViewtv=newTextView(getApplicationContext());tv.setTextsystemAppInfos.sizereturn}//==2.程序标题条目==Viewview=null;ViewHolderholdernull;if(convertView!=null&&convertViewinstanceofRelativeLayout){view=convertView;holder=(ViewHolder)}elseholder=newViewHolder();holder.iv_Icon=(ImageView)view.findViewById(R.id.iv_app_icon);holder.tv_name=(TextView)view.findViewById(R.id.tv_app_name);}AppInfoappInfo=if(position<=userAppInfos.size())appInfo=userAppInfos.get(position-}elseappInfo=systemAppInfos.get(position-userAppInfos.size()- }holder.tv_location.setText(appInfo.isInRom()?" 内存":"外部 returnreturn}}/**静态内部类,保存View中的孩子的引入staticclassViewHolderImageView //图标TextView //名称TextView } ListView的滚 *添加滚动privatevoidsetOnScrollListener(){lv_app_manager.setOnScrollListener(newOnScrollListener(){//滚动状态发生变化.publicvoidonScrollStateChanged(AbsListViewview,intscrollState)firstVisibleItempublicvoidonScroll(AbsListViewview,intfirstVisibleItem,intinttotalItemCount)//界面初始化的时候,也会执行滚 //根据当前滚动的状态,更新tv_statusif(userAppInfos!=null&&systemAppInfos!=null)if(firstVisibleItem>=userAppInfos.size()+1){tv_status.setTextsystemAppInfos.size}else}}}}CheckboxlistView的第一个条目的checkbox选中时,拖动,至第一个条目移除屏幕,这时checkbox也选中了;有条目中含有checkbox控件时,条目的onitemclick失效;ListViewgetViewview1个问Chebox2个问题;beanbeancheckboxclickfocus,android:clickable="false"条目的OnItemClickListener,手动设置界面checkbox与数据bean的选中状getViewbeancheckbox的选中状态;lv_process_manager.setOnItemClickListener(newOnItemClickListener(){publicvoidlv_process_manager.setOnItemClickListener(newOnItemClickListener(){publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,long{TaskInfotaskInfo=(TaskInfo)if(taskInfo!=null){ //取反//执行上面那句代码实际,数据bean已选择,但是界面上的checkboxCheckBoxcb=(CheckBox)view.findViewById(R.id.cb_status);}} //通过数据beanPopupWindowPopupPopupWindow须定义成ActivityPopupPopupWindowPopupWindows对象一定要记得设置背景,否则不能获得焦点,与实现动画;privateprivatePopupWindow1.创建popupTextViewtvnewTextView(getApplicationContext()); //创建Popup对象(高100,宽pupop=newPopupWindow(tv,LayoutParams.WRAPCONTENT,LayoutParams.WRAPCONTENT);//设置背景(一定要设置,否则不能获得焦点,不 //设置显示位置,与布局(左上角对其,距离left的距离50,距离top为100)pupop.showAtLocation(tvavailsdGravity.LEFT|Gravity.TOP50protectedvoidonDestroy(){if(pupop!=null&&pupop=null;}}popup1popup存在,即删除掉if1popup存在,即删除掉if(popup!=null&&popup.isShowing()){popup=}2.指定要显示的intlocationnew //获取点击的view置3.创建popuppopup.showAtLocation(parent,Gravity.LEFT|Gravity.TOP,70,location[1]);//ScaleAnimationsa=newScaleAnimation(0.5f,1.2f,0.5f,1.2f);TranslateAnimationta=newTranslateAnimation(0,20,0,0);AnimationSetset=new//缩放//位移效果//动画集合,widgets是一个嵌入其他应用中执行的小程序(如嵌入在桌面,有点类似于快捷图标widgets的选项框,4.0widgets注意:如果在模拟器上widget出不来,可能是文件中配置了程序的安装路径,去WidgetsAppWidetroviderpublic //元数据android:resource="@xml/example_appwidget_infoinitialLayout:minHeight/minWidth:widgetCategory:home_screen|keyguard:桌面|<appwidget-providerxmlns:android="http:// onReceive onEnabled widget创建时与当时间片到的时候(updatePeriodMillis的设置的时间,默认为半个小时( onDisabled() widget移除时,执行,表示禁用,可在此做一些扫尾的widgetwidget程间的通信,需要使用到ipcinterprocesscommunication;通过上面对生命周期的分析,可将启动服务放入onEnabledonDisabled中;java的序列化接口,widget就从这个公共的内存中取数据,publicclasspublicclassUpdateWidgetServiceextendsService/**定时任务privateTimerTasktask;privateTimertimer;publicvoidonCreate(){timer=newTimer();task=newTimerTask()publicvoidrun()//更新widgetAppWidgetManagerawm= ComponentNameprovidernew2个进程间通信ipcinterprocesscommunicationRemoteViews实现了Parcelable接口RemoteViewsviews=new//设置数据MemoryInfomemoryInfo=Formatter.formatFileSize(getApplicationContext(),memoryInfo.availMem));Intent意图,发广播开启activity开PendingIntentIntentintent=newIntent(); PendingIntentpendingIntentPendingIntent.getBroadcast(getApplicationContext(),0,intent,0);}timer.schedule(task2000 //循环执行}publicvoidonDestroy(){task=null;timer=null;}publicclasspublicclassProcessWidgetextendsAppWidgetProvider{publicvoidonEnabled(Contextcontext)//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论