新手向!开源音乐播放器JamsMusicPlayer源码解析<1>

来源:互联网 发布:dnf台服源码为什么泄漏 编辑:程序博客网 时间:2024/06/11 12:25

上一次大体总结了准备工作。
现在且来看看这个开源播放器中到底是怎么样工作的。
首先看到了WelcomeActivity这个包。这个应该是一开始的时候的欢迎和设置界面。
打开一看!呀!熟悉的Fragment!
WelcomeActivity
从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