新手向!开源音乐播放器JamsMusicPlayer源码解析<1>
来源:互联网 发布:dnf台服源码为什么泄漏 编辑:程序博客网 时间:2024/06/11 12:25
上一次大体总结了准备工作。
现在且来看看这个开源播放器中到底是怎么样工作的。
首先看到了WelcomeActivity这个包。这个应该是一开始的时候的欢迎和设置界面。
打开一看!呀!熟悉的Fragment!
从WelcomeActivity入手,有以下几个部分比较重要。
【注:为了阅读方便,这些代码并不是进行了筛选和排序】
//indicator的部分//ViewPagerIndicator的用例在这里//https://github.com/JakeWharton/ViewPagerIndicator private ViewPager welcomeViewPager;//Fragment中载体 private LinePageIndicator indicator; indicator = (LinePageIndicator) findViewById(R.id.indicator); indicator.setViewPager(welcomeViewPager);//这里将welcomViewPager传入给indicator final float density = getResources().getDisplayMetrics().density;//这里是说屏幕密度,即dpi/ indicator.setSelectedColor(0x880099CC); indicator.setUnselectedColor(0xFF4F4F4F); indicator.setStrokeWidth(2 * density); indicator.setLineWidth(30 * density); indicator.setOnPageChangeListener(pageChangeListener);//为其设置翻页监听器
//page的监听器部分private OnPageChangeListener pageChangeListener = new OnPageChangeListener() { @Override public void onPageScrollStateChanged(int scrollState) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // TODO Auto-generated method stub } @Override public void onPageSelected(int page) { /* If the user swiped away from the music folders * selection fragment, save the music folders to * the database. */ if (page==0 || page==2) { //请注意一下这里。这个类看起来很像AsyncTask new AsyncSaveMusicFoldersTask(mContext.getApplicationContext(), mMusicFoldersFragment.getMusicFoldersSelectionFragment() .getMusicFoldersHashMap()) .execute(); } /* If the user scrolls away from the Google Play Music page and * they have selected an account, check if the default Google Play * Music app is installed. */ if (page==3) { //获取Common中的一些信息 if (mApp.getSharedPreferences().getBoolean("GOOGLE_PLAY_MUSIC_ENABLED", false)==true) { //Check if the Google Play Music app is installed. PackageManager pm = mContext.getPackageManager(); boolean installed = false; try { pm.getPackageInfo("com.google.android.music", PackageManager.GET_ACTIVITIES); installed = true; } catch (NameNotFoundException e1) { //The app isn't installed. installed = false; } if (installed==false) { //Prompt the user to install Google Play Music. promptUserInstallGooglePlayMusic(); } } } //Launch the scanning AsyncTask. if (page==5) showBuildingLibraryProgress(); } };
这样,indicator之中就拥有了PagerView对象及监听器
【AsyncTask】这一个类笔者去网上找资料看了看,觉得有必要在这里插播一下,这个类非常有用,而且是在进行一些耗时较短的任务时。笔者在这里令开一篇。
【笔者大致察看了一下indicator中的逻辑,觉得今后可以另起一问,这里就先不赘述了】
0 0
- 新手向!开源音乐播放器JamsMusicPlayer源码解析<1>
- 新手向!开源播放器JamsMusicPlayer源码解析
- android源码解析------Music 音乐播放器
- 音乐播放器之源码解析一
- 音乐播放器之源码解析二
- 音乐播放器之源码解析三
- 音乐播放器之源码解析四
- 音乐播放器之源码解析五
- 音乐播放器之源码解析六
- 音乐播放器源码
- 本地音乐播放器项目思路解析和源码展示,如果你是新手或已入门那么请点我,你会吸收到不少加速剂
- android音乐播放器源码
- 音乐播放器源码下载
- android音乐播放器源码
- 开源音乐播放器!
- 音乐播放器1
- 一个开源音乐播放器,低仿QQ音乐!
- 【Android】Android开源项目(一)音乐播放器源码汇总
- linux awk命令详解
- IOS_OC_id ,NSObject, id<NSObject>区别
- 苹果开发工作整理
- 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接
- PMBOK(第五版)学习笔记 —— 10 项目沟通管理
- 新手向!开源音乐播放器JamsMusicPlayer源码解析<1>
- 关于Unity3D图集打包、深度、DrawCalll分析
- while中的continue和if中的continue的区别
- 锁屏流程
- 全面阐述overflow:hidden属性
- 我比杨过幸运
- C和c++有哪些区别?
- 使用HttpURLConnection发送get和post请求
- Oracle 序列号当前值