Jamendo源码地址:https://github.com/telecapoland/jamendo-android
src跟res结构:
之后将会按照流程走向和模块进行分析。
先来分析下初始界面:
先从manifest文件入手:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="JamendoApplication"> ... <activity android:name=".activity.SplashscreenActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"></action> <category android:name="android.intent.category.LAUNCHER"></category> </intent-filter> </activity> </application>一、全局的JamendoApplication
中央仓库预处理一些信息和存放一些公用的信息,在主activity之前先执行,后面穿插着说。
二、launcher activity:SplashscreenActivity
一进主activity,先加载页面,然后从配置文件判断是否需要弹出提示的dialog,dimiss掉dialog后触发一个淡出动画,动画结束,启动HomeActivity同时finish当前activity。
1、PreferenceManager.getDefaultSharedPreferences(this).getBoolean(FIRST_RUN_PREFERENCE, true)
从/data/data/包名/shared_prefs/下取得默认的配置文件,这个默认的文件名看源码可知是:包名_preferences.xml。如果是true,则弹出dialog,这个自定义dialog可以跟一下,非常简单。
2、给dialog设置setOnDismissListener()监听,当摁back键或者dialog上的close时都会触发这个监听,会先检测dialog上的checkbook是否选中,如果选中则更改配置,下次就不会弹出此dialog,再触发动画。
3、通过handler延迟执行此动画。
AnimationUtils.loadAnimation(this, R.anim.fade_out);//加载此淡出动画 <set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="bottom" android:fillAfter="false"> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="400" /> </set>//1.0代表不透明,0.0代表全透明。duration代码持续时间400msendAnimation.setFillAfter(true);