尚android企业级项目之新闻_第1页
尚android企业级项目之新闻_第2页
尚android企业级项目之新闻_第3页
尚android企业级项目之新闻_第4页
尚android企业级项目之新闻_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

玩转玩转Android—————————————————————————— 谷粉第46 01_自定义类RefreshListView和布局1_自定义类reshitie继承publicclassRefreshListViewextendsListViewpublicRefreshListView(Contextcontext,AttributeSetattrs,defStyle)super(context,attrs,defStyle);}publicRefreshListView(Contextcontext,AttributeSetattrs)super(context,attrs);}publicRefreshListView(Context{super(context);}@parampublicvoidinitHeaderView(Contextcontext){ViewheaderView=}}2_自定义头布 <LinearLayoutxmlns:android="http://s android:orientation="horizontal">android:layout_margin="5dip"> android:visibility="gone"/>android:orientation="vertical">android:textSize="20sp"/>android:textSize="14sp"/>3_自定义ProgressBar样式t_orsrxm9Float厚度的比例android:thicknessRatio=2出现则为false。<rotate android:useLevel="false">android:type="sweep"/>4_隐藏头publicvoidinitHeaderView(Contextcontext){ViewheaderView=intheaderViewHeight=headerView.setPadding(0,-headerViewHeight,0,}02_拖动实现隐藏和显示头部1_画图分2_代码实publicclassRefreshListViewextendsListViewpublicRefreshListView(Contextcontext,AttributeSetattrs,defStyle)super(context,attrs,defStyle);}publicRefreshListView(Contextcontext,AttributeSetattrs)super(context,attrs);}publicRefreshListView(Context{super(context);}*@parampublicvoidinitHeaderView(Context{headerView=View.inflate(context,headerViewHeight=}privateintprivateintprivateViewpublicbooleanonTouchEvent(MotionEventev)switch(ev.getAction())startY=(int)startY=(int)}intendY=(int)intdistanceY=endY-//根据:paddingTo=-控件的高+(endY-intpaddingTop=-headerViewHeight+headerView.setPadding(0,paddingTop,0,return}startY=-}return}}03_怎么判断什么情况完整显示轮播图的时1_思路扩展和画图分getFirstVisiblePosition()==0;这种情况不能显示顶了,显示的话不是我们想要的系统控件是API2_先改变布 <LinearLayoutxmlns:android="http://s android:orientation="horizontal">android:orientation="vertical">3_代码实现ereshitie代码publicclassRefreshListViewextendsListViewprivateintprivateintprivateViewprivateLinearLayout*privateView*@parampublicvoidinitHeaderView(Context{headerView=(LinearLayout)pullDownHeadViewheaderViewHeight=pullDownHeadView.setPadding(0,-headerViewHeight,0,}@parampublicvoidsecondHeaderView){this.secondHeaderView=secondHeaderView;}publicbooleanonTouchEvent(MotionEventev)switch(ev.getAction())startY=(int)startY=(int)}intendY=(int)intdistanceY=endY-//根据:paddingTo=-控件的高+(endY-intpaddingTop=-headerViewHeight+ headerView.setPadding(0,paddingTop,0,pullDownHeadView.setPadding(0,paddingTop,0,return}startY=-}return}} DetailPager中使用RefreshListViewpublicViewinitView()Viewview=View.inflate(mActivity,R.layout.tab_detail,ViewtopnewsView=View.inflate(mActivity,R.layout.tab_detail_topnews,null);return}01_判断轮播图是否完全1_触 里调publicbooleanonTouchEvent(MotionEventev)switch(ev.getAction())startY=(int)if(startY==-startY=(int)}intendY=(int)intdistanceY=endY- booleanisDisy=isDis}if(distanceYintpaddintTop=-headerViewHeight+(distanceY);refreshHeaderView.setPadding(0,paddintTop,0,0);returntrue;}startY=-1;}return}2_判断轮播图是否完整显示方

privatebooleanisDisySecondHeaderView()int[]location=newif(mListViewOnScreen1){this.getLocationOnScreen(location);mListViewOnScreen=location[1];}//获取轮播图在屏幕中Y的值topNewsView.getLocationOnScreen(location);intmSecondHeaderViewOnScreen=location[1];if(mListViewOnScreen<=returnreturn}}returnmListViewOnScreen<=02_刷新的效果的实1_刷新的状态

*privatefinalintPULL_DOWN_REFRESH=*privatefinalintRELEASE_REFRESH=*privatefinalintREFRESHING=privateintcurrentState=publicbooleanonTouchEvent(MotionEventev)switch(ev.getAction())startY=(int)if(startY==-startY=(int)}intendY=(int)intdistanceY=endY- booleanisDisy=isDis}if(distanceYintpaddintTop=-headerViewHeight+if(paddintTop>0&¤tStatecurrentState=RELEASE_REFRESH;}elseif(paddintTop<0&¤tState!=PULL_DOWN_REFRESH){currentState=PULL_DOWN_REFRESH;}refreshHeaderView.setPadding(0,paddintTop,0,return}startY=-1;}return}2_下拉刷新状态处理publicbooleanonTouchEvent(MotionEventev)switch(ev.getAction())if(distanceYintpaddintTop=-headerViewHeight+if(paddintTop>0&¤tStatecurrentState=RELEASE_REFRESH;}elseif(paddintTop<0&¤tState!=PULL_DOWN_REFRESH){currentState=PULL_DOWN_REFRESH;}refreshHeaderView.setPadding(0,paddintTop,0,return}startY=-1;}return}

*privateImageView*privateProgressBarprivateTextViewprivateTextViewprivateRotateAnimationprivateRotateAnimation

@parampublicvoidinitHeaderView(Context{headerView=(LinearLayout)ivArrow=(ImageView)mProgressBar=(ProgressBar)tvState=(TextView)tvTime=(TextView)refreshHeaderView=}privatevoid{upAnima=0,-Animation.RELATIVE_TO_SELF,0.5f,downAnima=new-180,-Animation.RELATIVE_TO_SELF,0.5f,}privatevoidrefreshHeaderViewState()switch(currentState)casePULL_DOWN_REFRESH://下拉刷新caseRELEASE_REFRESH://松开刷新caseREFRESHING://正在刷新中}}03_下拉刷新松开处理和1_下拉刷新松开publicbooleanonTouchEvent(MotionEventev)switch(ev.getAction())startY=(int)if(startY==-startY=(int)}intendY=(int)intdistanceY=endY- }booleanisDisy=isDis}if(distanceYintpaddintTop=-headerViewHeight+if(paddintTop>0&¤tStatecurrentState=RELEASE_REFRESH;}elseif(paddintTop<0&¤tState!=PULL_DOWN_REFRESH){currentState=PULL_DOWN_REFRESH;}refreshHeaderView.setPadding(0,paddintTop,0,return}startY=-1;if(currentState==refreshHeaderView.setPadding(0,-headerViewHeight,0,}elseif(currentState==currentState=REFRESHING;refreshHeaderView.setPadding(0,0,0,0);}}return}2_下拉刷privateOnRefreshListener@parampublicvoidsetOnRefreshListener(OnRefreshListenerthis.mOnRefreshListener=}publicinterfacepublicvoid}startY=-1;if(currentState==refreshHeaderView.setPadding(0headerViewHeight00);}elseif(currentState==currentState=REFRESHING;refreshHeaderView.setPadding(0000);if(mOnRefreshListener}}}return}

publiconRefreshFinish(){refreshHeaderView.setPadding(0,-headerViewHeight,0,0);currentState=} 调用下拉@authorpublicclassTabDetailPagerextendsDetailBasePagerprivatebooleanisPullDownRefreshing=false;publicViewinitView()publicvoid{isPullDownRefreshing=true;;}return}privatevoidgetDataFromNet()HttpUtilshttpUtils=newHttpUtils();httpUtils.send(HttpMethod.GET,url,newReqallBack<String>(){//TODOAuto-generatedmethodstubefreshing=false;}//处理和解析json}publicvoidonFailure(HttpExceptionerror,Stringmsg)efreshing=false;}}}}4_下拉刷新的时publicvoidonRefreshFinish(booleanrefreshHeaderView.setPadding(0,-headerViewHeight,0,0);currentState=PULL_DOWN_REFRESH;}}

privateStringgetSystemTime()returnsdf.format(new}@parampublicvoidinitHeaderView(Context{headerView=(LinearLayout)tvTime=(TextView)}01_添加角布1_初始化和隐藏代码@paramprivatevoidinitFooterView(Context{ViewfooterView=View.inflate(context,R.layout.refresh_listview_footer,null);intfooterViewHeight=footerView.getMeasuredHeight();footerView.setPadding(0,-footerViewHeight,0,0);}2_布局文 eeh_stiorm<LinearLayoutxmlns:android="http://s android:textSize="25sp"/>02_拖动到底部的时候显1_拖动到底部显示加 布

*//滑动到最后一个可以看到的ItemisLoadingMore=true;footerView.setPadding(0,000);if(mOnRefreshListener!=null){mOnRefreshListener.onLoadi}}}}publicvoidonScroll(AbsListViewview,intintvisibleItemCount,inttotalItemCount)}*publicinterfacepublicvoidpublicvoid}publicvoidonRefreshFinish(booleanfooterView.setPadding(0,-footerViewHeight,0,0);isLoadingMore=false;refreshHeaderView.setPadding(0,-headerViewHeight,0,0);currentState=PULL_DOWN_REFRESH;}}}2_联网请求加 数@authorpublicclassTabDetailPagerextendsDetailBasePagerprivateNewCenterTagprivateStringprotectedbooleanisLoadingMore=publicViewinitView()Viewview=View.inflate(mActivity,R.layout.tab_detail,publicvoid{isPullDownRefreshing=true;}publicvoidonLoadingMore(),"没有数据了",1).show();}}return}*加载数protectedvoidgetMoreDataFromNet()HttpUtilshttpUtils=newHttpUtils();httpUtils.send(HttpMethod.GET,moreUrl,new isLoadingMore=}publicvoidonFailure(HttpExceptionerror,String{mListView.onRefreshFinish(false);System.out.println("加载数据失败:"+msg);}}@paramprotectedvoidprocessData(String{TabDetailBeanbean=0).title);topnews=bean.data.topnews;TabDetailAdapteradapter=newTabDetailAdapter();//把所有的View清除Viewpoint=newView(mActivity);LayoutParamsparams=newLayoutParams(5,5);params.leftMargin=}玩转玩转Android—————————————————————————— }previousPointPosition=newsListsbean.data.news;listViewAdapter=newListViewAdapter(); ListView中isLoadingMore=List<News>moreDataNews=bean.data.news;}}@paramprivateTabDetailBeanparserJson(Stringjson)Gsongson=newTabDetailBeanbean=gson.fromJson(json,TabDetailBean.class);moreUrl=bean.data.more;moreUrl=null;moreUrl=}return}publicvoidonPageScrollStateChanged(intarg0)//TODOAuto-generatedmethod}publicvoidonPageScrolled(intarg0,floatarg1,intarg2)//TODOAuto-generatedmethod}} 01_设置点击某一条后变1_以数组方式记录点击后 *ID数组privateStringREAD_NEWS_ID_ARRAY_KEY=publicViewinitView()Viewview=View.inflate(mActivity,R.layout.tab_detail,publicvoidonItemClick(AdapterView<?>parent,Viewintposition,longid)intrealPosition=position-NewsnewsItem=题组后边加上当前的id,并且保存起来。StringreadNewsIdArray=CacheUitls.getString(mActivity,READ_NEWS_ID_ARRAY_KEY,"");//StringcurrentValues=//currentValues=newsItem.id+",//currentValues=readNewsIdArray+newsItem.id+",StringcurrentValues=readNewsIdArray+newsItem.id+",

}}return}2_适配器classListViewAdapterextendspublicViewgetView(intposition,ViewconvertView,ViewGroupparent)StringreadNewsIdArray=CacheUitls.getString(mActivity,READ_NEWS_ID_ARRAY_KEY,"");}return}}02_详情页1_创 详情页面NewsDetailActivity数据接*详情页@author*publicclassNewsDetailActivityextendsActivityprotectedvoidonCreate(BundlesavedInstanceState)Stringurl=getIntent().getStringExtra("url");}}Intentintent=newIntent(mActivity,NewsDetailActivity.class);intent.putExtra("url",newsItem.url);2_创 详情页面布局文1_详情页面布局文件<LinearLayoutxmlns:android="http://s android:layout_height="match_parent"/> android:background="@drawable/title_red_bg">android:textSize="23sp"/> "/>android:visibility="gone"/>android:orientation="horizontal">android:visibility="gone"/>android:visibility="gone"/> 代码初始化布局文*详情页@author{privateStringurl;protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);url=getIntent().getStringExtra("url");}privatevoidinitView()WebViewwebView=(WebView)}publicvoidonClick(Viewv)switch(v.getId())case}}}4_设置加<LinearLayoutxmlns:android="http://s android:layout_height="wrap_content"/>

privatevoidinitView()finalProgressBarprogressBar=(ProgressBar)WebViewwebView=(WebView)publicvoidonPageFinished(WebViewview,String{super.onPageFinished(view,url);}}5_设置支持 语WebSettingssetting=//设置支持javaScript6_设置支持双击缩放protectedvoidonCreate(Bundle{super.onCreate(savedInstanceState);== }WebSettingssetting=//设置支持javaScript5_webview字体大小修改-*详情页*@author*{privateStringprivateintcurrentSelectTextSize=privateinttempSelectTextSize=privateWebSettingspublicvoidonClick(Viewv)switch(v.getId())caseR.id.ib_news_detail_text_size://设置文字大小case}}

温馨提示

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

最新文档

评论

0/150

提交评论