android項(xiàng)目實(shí)戰(zhàn)多媒體開發(fā)shhmvmplayer播放器_第1頁
android項(xiàng)目實(shí)戰(zhàn)多媒體開發(fā)shhmvmplayer播放器_第2頁
android項(xiàng)目實(shí)戰(zhàn)多媒體開發(fā)shhmvmplayer播放器_第3頁
android項(xiàng)目實(shí)戰(zhàn)多媒體開發(fā)shhmvmplayer播放器_第4頁
android項(xiàng)目實(shí)戰(zhàn)多媒體開發(fā)shhmvmplayer播放器_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

VMyer一、1該項(xiàng)目采用的是MVP架構(gòu),v層和p層的解耦使用目前比較流行的2、Ssh歡迎界面的完界面需求分析:1全屏2執(zhí)行縮放動畫3設(shè)置動畫,執(zhí)行動畫完畢界面跳<item 動畫最終縮放的倍數(shù)1.0為正常大小,大于1.0放 3設(shè)置動畫,執(zhí)行動畫完畢界面跳animation.setAnimationListener(newAnimation.AnimationListener(){}}}3UI<stylename="AppTheme" <stylename="AppTheme" <item<item<stylename="AppTheme" <item<item<!--Android5.x開始需要把顏色設(shè)置透明,否則導(dǎo)航欄會呈現(xiàn)系統(tǒng)默<item4compile'com.roughike:bottom- 被選中的Tab的顏色 Tab切換時的動畫效果 未被選中的Tab的 未被選中的Tab的顏色 加載對應(yīng)的Tab資源Bottombartab條目點(diǎn)擊//tabIdFragmentFragmentfragment}5主要是對數(shù)據(jù)的緩存進(jìn)行處理(框架才用Glide)newThread(newRunnable(){publicvoidrun()}用戶可 3WifiNetworkInfomobNetInfoActivity=connectivityManager.getActiveNetworkInfo();intnetType=mobNetInfoActivity.getType();returnnetType==6 7Activity<item<item8MVP1aptproject的gradle//Addpluginbuildscript{dependenciesclasspath'com.neenbedankt.gradle.plugins:android-}}2、aptmodlegradle//Applyapplyplugin:'com.neenbedankt.android-3dagger2//AddDaggerdependenciesdependencies{compile'com.apt'com.}Dagger2中注解的使 9、Okhttp3.0 {Typesuperclass=subclass.getGenericSuperclass();if(superclassinstanceofClass){}return}public{type=}ItHeiMaHttpheiMaHttpItHeiMaHttp.getInstance().addHead("參數(shù)名稱","參數(shù)").//加頭WSCallBack<Bean>JSON,StringheiMaHttp.get("BASE_URL",newWSCallBack<Bean>(){publicvoidonFailure(Callcall,Exceptione)//}publicvoidonSuccess(Beanbean)//}二、HttpManagerhttpManager=addParam("offset",offset+"").addParam("size",size+"");publicvoidonFailure(Callcall,Exceptione){}publicvoidonSuccess(List<Bean>Been){}2、根據(jù)數(shù)據(jù)BeanTypeIconfinalinttag;Stringtype=ifACTIVITY".equalsIgnoreCase(type打開頁面tag=0;}elseif(" ".equalsIgnoreCase(typeMVMVtag=1;

}elseif("WEEK_MAIN_STAR".equalsIgnoreCase(type)){//(悅單)tag=}elseif("YLIST".equalsIgnoreCase(type)){//(悅單)點(diǎn)擊進(jìn)去跟顯示悅單詳情一樣tag=3;}elseif("AD".equalsIgnoreCase(type)){tag=4;elseif"PROGRAM".equalsIgnoreCase(typeMVtag=}elseif("bulletin".equalsIgnoreCase(type)){tag=6;}elseif("fanart".equalsIgnoreCase(type)){tag=7;}elseif("live".equalsIgnoreCase(type)){tag=8;}elseif("LIVENEW".equalsIgnoreCase(type)||("LIVENEWLIST".equals(type))){tag=9;}elseif("INVENTORY".equalsIgnoreCase(Bean.getType())){//打開頁面tag=10;}elsetag=-}02、適配的處1、在基類中處理的寬protectedvoidobserv(intwidth,intheight)DisyMetricsmetrics=newDismWidth=metrics.widthPixels;mHeight=(mWidth*height)/}03、實(shí)現(xiàn)下拉刷新和加載功1、下拉控件才用的是V4包下的publicvoidonRefresh(){}publicvoidonScrolled(RecyclerViewrecyclerView,intdx,intdy){super.onScrolled(recyclerView,dx,dy);}04、”MV”MV<LinearLayoutxmlns:android="http://s //tab沒有被選的文本顏app:tabMode="scrollable"設(shè)置可以滑動 2、根據(jù)獲取到的數(shù)據(jù)初始化Vie ge的Adpaterfor(inti=0;i<data.size();i++){}05、”MV”ITEM1、MV中的Vie ger的條目都是Fragment的形式,在Fragment中要根據(jù)對應(yīng)的code獲取對應(yīng)的類型數(shù)據(jù),所以在Fragment初始化的時候就傳入對應(yīng)的code//MvItemFragmentmvItemFragment=newMvItemFragment();Bundlebundle=newBundle();returnmvItemFragment;}//codepublicvoidonCreate(@NullableBundlesavedInstanceState){code=(String)}//codepublicvoidgetData(Stringcode,intoffset,intsize)addParam("area",code).addParam("offset",""+offset).addParam("size",""+size);publicvoidonFailure(Callcall,Exceptione)}}}06、”MV”ITEM//publicvoidonRefresh(){}//加載}08、引入compile 2、用戶按下返回publicvoidonBackPressed(){}super.onBackPressed();4、顯示finalMaterialDialog.Builderbuilder=newpublicvoidonClick(@NonNullMaterialDialogdialog,@NonNullDialogActionwhich){}{}//publicvoidshowDialog()MaterialDialog.Builderbuilder=newMaterialDialog.Builder(getActivity());gress(true,0);}//publicvoidif(dialog!=}caselastY=ev.getRawY();floatmoveX=ev.getRawX();offsetX=moveX-lastX;offsetY=moveY-lastY;floatintposition=if(absY>absX&&offsetY>10&&!isShowBottomBar&&//BottomBar}elseif(absY>absX&&offsetY<-10&&isShowBottomBar&&//BottomBar}//privatevoidenterBottomBar(){isShowBottomBar=true;ObjectAnimatoroa=ObjectAnimator.ofFloat(bottomBar,"translationY",((float)bottomBar.getHeight()),0f);}//isShowBottomBar=ObjectAnimatoroa=ObjectAnimator.ofFloat(bottomBar,"translationY",0f,((float)}11、RecyclerView StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);2、處理在滾動時移位的問 intcompile'com.三、1、條目點(diǎn)擊的處publicvoidonClick(Viewv)IntentmIntent=newIntent();switch(tag){casecasecasecase1:casecasecase2:case}} <item<solid<item//<item<solid03、點(diǎn)擊條目進(jìn)入器 yer的3、根據(jù)Id獲取資源信息并通過器04MVPP1Dagger2Uriuri=MediaStore.Audio.Media.MediaStore.Audio.Media.DURATION,MediaStore.Audio.Media.SIZE,MediaStore.Audio.Media.DATA};MyQueryHandlermyQueryHandler=new//token:}05、獲取SD卡的權(quán)1,判斷是否申請了SD卡的權(quán)2,申請SDK卡的權(quán)ActivityFragmentz3,權(quán)限申請結(jié)果06、開啟異步查詢并查詢結(jié)protectedvoid plete(inttoken,Object,Cursorcursor){plete(token,,cursor);if(token==0&&instanceof}}publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){Cursorcursor=(Cursor)myCursorAdapter.getItem(position); }//CursorCursor移動-1ifwhileMusicBeanmusicBean=MusicBean.fromCursor(cursor);}}return}Filefile=DecimalFormatdecimalFormat=newDecimalFormat();StringfileSize=decimalFormat.format(getFileSize(file));privatefloatgetFileSize(Filefile)if(file.isDirectory())File[]listFiles=file.listFiles();floatsize=0.0f;for(FilemFile:listFiles)size}return}elsefloatsize=(float)file.length()/1024/1024;returnsize;}}return}newThread(newRunnable()publicvoidrun()}1、音樂界面的幀動畫privatevoidyAnim()AnimationDrawabledrawable=(AnimationDrawable)ivAnim.getBackground();}bindServicestartService來使用,bindServiceBinder對象,startServiceService傳遞數(shù)據(jù)用的:ServiceConnectionCallbackconnectionCallback=newServiceConnectionCallback();Intentintent=newIntent(this,MusicyService.class);intent.putExtra("musicList",musicList);//為了拿到binder對象,操作邏四、01、在Service中定義音樂的publicclassMusicyextendsBinder1、類對音樂代碼的實(shí)現(xiàn):publicvoidyMusic(){mediayer=null;}try yer=newMediaMusicItemmusicItem= }catch(IOExceptione){}}、、 mond方法中接收數(shù)publicint mand(Intentintent,intflags,intstartId){}elsecurrentMusic=musicList= }}return}03、給Mediayer設(shè)置準(zhǔn)備的和完成// Mediayer.OnPreparedListener(){publicvoidonPrepared(Mediayermp){}//設(shè)置完成的 pletionListener(){public pletion(Mediayermp)}publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser){if(fromUser){}}publicvoidonStartTrackingTouch(SeekBarseekBar){musicyerpause();}publicvoidonStopTrackingTouch(SeekBarseekBar){musicyerstart();}privateclassMusicReceiverextendsBroadcastR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論