上一次大体总结了准备工作。
现在且来看看这个开源播放器中到底是怎么样工作的。
首先看到了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中的逻辑,觉得今后可以另起一问,这里就先不赘述了】
版权声明:本文为博主原创文章,转载请标明出处。