diff --git a/.gradle/4.1/fileChanges/last-build.bin b/.gradle/4.1/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/4.1/fileChanges/last-build.bin differ diff --git a/.gradle/4.1/fileContent/fileContent.lock b/.gradle/4.1/fileContent/fileContent.lock new file mode 100644 index 0000000..914eea3 Binary files /dev/null and b/.gradle/4.1/fileContent/fileContent.lock differ diff --git a/.gradle/4.1/fileHashes/fileHashes.bin b/.gradle/4.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000..969cf38 Binary files /dev/null and b/.gradle/4.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/4.1/fileHashes/fileHashes.lock b/.gradle/4.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000..b231ac9 Binary files /dev/null and b/.gradle/4.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/4.1/fileHashes/resourceHashesCache.bin b/.gradle/4.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..14112e3 Binary files /dev/null and b/.gradle/4.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/4.1/javaCompile/classAnalysis.bin b/.gradle/4.1/javaCompile/classAnalysis.bin new file mode 100644 index 0000000..37aaad1 Binary files /dev/null and b/.gradle/4.1/javaCompile/classAnalysis.bin differ diff --git a/.gradle/4.1/javaCompile/jarAnalysis.bin b/.gradle/4.1/javaCompile/jarAnalysis.bin new file mode 100644 index 0000000..01aa838 Binary files /dev/null and b/.gradle/4.1/javaCompile/jarAnalysis.bin differ diff --git a/.gradle/4.1/javaCompile/javaCompile.lock b/.gradle/4.1/javaCompile/javaCompile.lock new file mode 100644 index 0000000..4fc27a0 Binary files /dev/null and b/.gradle/4.1/javaCompile/javaCompile.lock differ diff --git a/.gradle/4.1/javaCompile/taskHistory.bin b/.gradle/4.1/javaCompile/taskHistory.bin new file mode 100644 index 0000000..d1ad94c Binary files /dev/null and b/.gradle/4.1/javaCompile/taskHistory.bin differ diff --git a/.gradle/4.1/javaCompile/taskJars.bin b/.gradle/4.1/javaCompile/taskJars.bin new file mode 100644 index 0000000..a94e64a Binary files /dev/null and b/.gradle/4.1/javaCompile/taskJars.bin differ diff --git a/.gradle/4.1/taskHistory/fileSnapshots.bin b/.gradle/4.1/taskHistory/fileSnapshots.bin new file mode 100644 index 0000000..cfdcbe2 Binary files /dev/null and b/.gradle/4.1/taskHistory/fileSnapshots.bin differ diff --git a/.gradle/4.1/taskHistory/taskHistory.bin b/.gradle/4.1/taskHistory/taskHistory.bin new file mode 100644 index 0000000..1d7ce4a Binary files /dev/null and b/.gradle/4.1/taskHistory/taskHistory.bin differ diff --git a/.gradle/4.1/taskHistory/taskHistory.lock b/.gradle/4.1/taskHistory/taskHistory.lock new file mode 100644 index 0000000..ee8de59 Binary files /dev/null and b/.gradle/4.1/taskHistory/taskHistory.lock differ diff --git a/.gradle/buildOutputCleanup/built.bin b/.gradle/buildOutputCleanup/built.bin new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..1ac690b --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Jan 03 14:52:56 CST 2018 +gradle.version=4.1 diff --git a/.gradle/buildOutputCleanup/cache.properties.lock b/.gradle/buildOutputCleanup/cache.properties.lock new file mode 100644 index 0000000..40fdece --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties.lock @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7ac24c7 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_animated_vector_drawable_25_4_0.xml b/.idea/libraries/com_android_support_animated_vector_drawable_25_4_0.xml new file mode 100644 index 0000000..665e6f3 --- /dev/null +++ b/.idea/libraries/com_android_support_animated_vector_drawable_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_appcompat_v7_25_4_0.xml b/.idea/libraries/com_android_support_appcompat_v7_25_4_0.xml new file mode 100644 index 0000000..656804c --- /dev/null +++ b/.idea/libraries/com_android_support_appcompat_v7_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_constraint_constraint_layout_1_0_2.xml b/.idea/libraries/com_android_support_constraint_constraint_layout_1_0_2.xml new file mode 100644 index 0000000..1684455 --- /dev/null +++ b/.idea/libraries/com_android_support_constraint_constraint_layout_1_0_2.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml b/.idea/libraries/com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml new file mode 100644 index 0000000..d6126fa --- /dev/null +++ b/.idea/libraries/com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_design_25_4_0.xml b/.idea/libraries/com_android_support_design_25_4_0.xml new file mode 100644 index 0000000..790e82a --- /dev/null +++ b/.idea/libraries/com_android_support_design_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_recyclerview_v7_25_4_0.xml b/.idea/libraries/com_android_support_recyclerview_v7_25_4_0.xml new file mode 100644 index 0000000..da9cf85 --- /dev/null +++ b/.idea/libraries/com_android_support_recyclerview_v7_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_annotations_25_4_0_jar.xml b/.idea/libraries/com_android_support_support_annotations_25_4_0_jar.xml new file mode 100644 index 0000000..98b5db0 --- /dev/null +++ b/.idea/libraries/com_android_support_support_annotations_25_4_0_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_compat_25_4_0.xml b/.idea/libraries/com_android_support_support_compat_25_4_0.xml new file mode 100644 index 0000000..ab35510 --- /dev/null +++ b/.idea/libraries/com_android_support_support_compat_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_core_ui_25_4_0.xml b/.idea/libraries/com_android_support_support_core_ui_25_4_0.xml new file mode 100644 index 0000000..cb92a9c --- /dev/null +++ b/.idea/libraries/com_android_support_support_core_ui_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_core_utils_25_4_0.xml b/.idea/libraries/com_android_support_support_core_utils_25_4_0.xml new file mode 100644 index 0000000..25c7027 --- /dev/null +++ b/.idea/libraries/com_android_support_support_core_utils_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_fragment_25_4_0.xml b/.idea/libraries/com_android_support_support_fragment_25_4_0.xml new file mode 100644 index 0000000..47ff308 --- /dev/null +++ b/.idea/libraries/com_android_support_support_fragment_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_media_compat_25_4_0.xml b/.idea/libraries/com_android_support_support_media_compat_25_4_0.xml new file mode 100644 index 0000000..69af213 --- /dev/null +++ b/.idea/libraries/com_android_support_support_media_compat_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_v4_25_4_0.xml b/.idea/libraries/com_android_support_support_v4_25_4_0.xml new file mode 100644 index 0000000..12683cb --- /dev/null +++ b/.idea/libraries/com_android_support_support_v4_25_4_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_support_vector_drawable_25_4_0.xml b/.idea/libraries/com_android_support_support_vector_drawable_25_4_0.xml new file mode 100644 index 0000000..d3950b2 --- /dev/null +++ b/.idea/libraries/com_android_support_support_vector_drawable_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_test_espresso_espresso_core_3_0_1.xml b/.idea/libraries/com_android_support_test_espresso_espresso_core_3_0_1.xml new file mode 100644 index 0000000..4a6d948 --- /dev/null +++ b/.idea/libraries/com_android_support_test_espresso_espresso_core_3_0_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_test_espresso_espresso_idling_resource_3_0_1.xml b/.idea/libraries/com_android_support_test_espresso_espresso_idling_resource_3_0_1.xml new file mode 100644 index 0000000..4825d39 --- /dev/null +++ b/.idea/libraries/com_android_support_test_espresso_espresso_idling_resource_3_0_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_test_rules_1_0_1.xml b/.idea/libraries/com_android_support_test_rules_1_0_1.xml new file mode 100644 index 0000000..5cd9efe --- /dev/null +++ b/.idea/libraries/com_android_support_test_rules_1_0_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_test_runner_1_0_1.xml b/.idea/libraries/com_android_support_test_runner_1_0_1.xml new file mode 100644 index 0000000..9fd4286 --- /dev/null +++ b/.idea/libraries/com_android_support_test_runner_1_0_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_android_support_transition_25_4_0.xml b/.idea/libraries/com_android_support_transition_25_4_0.xml new file mode 100644 index 0000000..6b5a5fb --- /dev/null +++ b/.idea/libraries/com_android_support_transition_25_4_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_google_code_findbugs_jsr305_2_0_1_jar.xml b/.idea/libraries/com_google_code_findbugs_jsr305_2_0_1_jar.xml new file mode 100644 index 0000000..6343119 --- /dev/null +++ b/.idea/libraries/com_google_code_findbugs_jsr305_2_0_1_jar.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/com_squareup_javawriter_2_1_1_jar.xml b/.idea/libraries/com_squareup_javawriter_2_1_1_jar.xml new file mode 100644 index 0000000..cdb8c22 --- /dev/null +++ b/.idea/libraries/com_squareup_javawriter_2_1_1_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/de_hdodenhof_circleimageview_2_2_0.xml b/.idea/libraries/de_hdodenhof_circleimageview_2_2_0.xml new file mode 100644 index 0000000..0194284 --- /dev/null +++ b/.idea/libraries/de_hdodenhof_circleimageview_2_2_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/javax_inject_javax_inject_1_jar.xml b/.idea/libraries/javax_inject_javax_inject_1_jar.xml new file mode 100644 index 0000000..b028368 --- /dev/null +++ b/.idea/libraries/javax_inject_javax_inject_1_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/junit_junit_4_12_jar.xml b/.idea/libraries/junit_junit_4_12_jar.xml new file mode 100644 index 0000000..a026090 --- /dev/null +++ b/.idea/libraries/junit_junit_4_12_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/net_sf_kxml_kxml2_2_3_0_jar.xml b/.idea/libraries/net_sf_kxml_kxml2_2_3_0_jar.xml new file mode 100644 index 0000000..ee85b61 --- /dev/null +++ b/.idea/libraries/net_sf_kxml_kxml2_2_3_0_jar.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/org_hamcrest_hamcrest_core_1_3_jar.xml b/.idea/libraries/org_hamcrest_hamcrest_core_1_3_jar.xml new file mode 100644 index 0000000..8bc8974 --- /dev/null +++ b/.idea/libraries/org_hamcrest_hamcrest_core_1_3_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/org_hamcrest_hamcrest_integration_1_3_jar.xml b/.idea/libraries/org_hamcrest_hamcrest_integration_1_3_jar.xml new file mode 100644 index 0000000..6fd1927 --- /dev/null +++ b/.idea/libraries/org_hamcrest_hamcrest_integration_1_3_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/org_hamcrest_hamcrest_library_1_3_jar.xml b/.idea/libraries/org_hamcrest_hamcrest_library_1_3_jar.xml new file mode 100644 index 0000000..5225e0e --- /dev/null +++ b/.idea/libraries/org_hamcrest_hamcrest_library_1_3_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f342a0b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ca692d6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..34c52be --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,2912 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1514962375480 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app.iml b/app/app.iml new file mode 100644 index 0000000..10e90a1 --- /dev/null +++ b/app/app.iml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 14820a0..1979101 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 26 + compileSdkVersion 25 defaultConfig { applicationId "com.skywalker.idouban" - minSdkVersion 14 - targetSdkVersion 26 + minSdkVersion 16 + targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -20,9 +20,12 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:26.1.0' - implementation 'com.android.support:design:26.1.0' + implementation 'com.android.support:appcompat-v7:25.4.0' + implementation 'com.android.support:design:25.4.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' + + implementation 'de.hdodenhof:circleimageview:2.2.0' + testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b9ef65a..69c9286 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,17 +8,20 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme.NoActionBar"> + > + + + \ No newline at end of file diff --git a/app/src/main/java/com/skywalker/idouban/GuideActivity.java b/app/src/main/java/com/skywalker/idouban/GuideActivity.java new file mode 100644 index 0000000..74641bd --- /dev/null +++ b/app/src/main/java/com/skywalker/idouban/GuideActivity.java @@ -0,0 +1,193 @@ +package com.skywalker.idouban; + +import android.app.Activity; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Build; +import android.os.Bundle; +import android.support.v4.view.ViewPager; +import android.view.View; +import android.view.ViewTreeObserver; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; + +import com.skywalker.idouban.adapter.GuideAdapter; +import com.skywalker.idouban.collector.ActivityCollector; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by xieyulei on 2017/11/23. + */ +public class GuideActivity extends Activity implements View.OnClickListener { + + private ViewPager mViewPager; + private Button mBtnSkip; + private Button mBtnDone; + private ImageButton mIbNext; + private LinearLayout mPointGroup; + private ImageView mWhitePoint; + + //声明圆点之剑的间隔 + private int mPointMargin; + + public List mImageList =new ArrayList<>(); + private int[] mIcons = {R.mipmap.guide1, R.mipmap.guide2, R.mipmap.guide3, R.mipmap.guide4}; + private SharedPreferences mSp; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_guide); + + ActivityCollector.addActivity(this); + + getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);//添加此行代码原因:部分手机底部有虚拟键,使其布局向下延伸至全屏,正常显示引导页动画 + + mSp = getSharedPreferences("config", MODE_PRIVATE); + //初始化控件 + mViewPager = (ViewPager) findViewById(R.id.splash_view_pager); + mBtnSkip = (Button) findViewById(R.id.button_skip); + mBtnDone = (Button) findViewById(R.id.button_done); + mIbNext = (ImageButton) findViewById(R.id.imageButton_next); + mPointGroup = (LinearLayout) findViewById(R.id.point_group); + mWhitePoint = (ImageView) findViewById(R.id.white_point); + + mIbNext.setOnClickListener(this); + mBtnDone.setOnClickListener(this); + mBtnSkip.setOnClickListener(this); + + //准备要展示的图片集合 + mImageList = new ArrayList<>(); + for (int i = 0; i < mIcons.length; i++) { + ImageView image = new ImageView(this); + image.setBackgroundResource(mIcons[i]); + + mImageList.add(image); + + // 设置底部小圆点 + ImageView point = new ImageView(this); + point.setImageResource(R.drawable.shape_point_normal); + + // 设置白点的布局参数 + int pointSize = getResources().getDimensionPixelSize(R.dimen.point_size); + RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(pointSize, pointSize); + mWhitePoint.setLayoutParams(params1); + + // 设置灰色点的布局参数 + LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(pointSize, pointSize); + if (i > 0) { + params2.leftMargin = getResources().getDimensionPixelSize(R.dimen.left_margin); + } + point.setLayoutParams(params2); + mPointGroup.addView(point); + } + + GuideAdapter adapter = new GuideAdapter(mImageList); + mViewPager.setAdapter(adapter); + + // 获取视图树对象,通过监听白点布局的显示,然后获取两个圆点之间的距离 + mWhitePoint.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + mPointMargin = mPointGroup.getChildAt(1).getLeft() - mPointGroup.getChildAt(0).getLeft(); + //removeOnGlobalLayoutListener 此方法要求最低API 16 项目初始化时为14 + mWhitePoint.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } + }); + + + /** + * 为viewPager添加监听事件 + */ + + + mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + // 页面滑动的时候,动态的获取小圆点的左边距 + int marginLeft = (int) (mPointMargin * (position + positionOffset)); + + // 获取布局参数,然后设置布局参数 + RelativeLayout.LayoutParams params3 = (RelativeLayout.LayoutParams) mWhitePoint.getLayoutParams(); + + // 修改参数 + params3.leftMargin = marginLeft; + + // 重新设置布局参数 + mWhitePoint.setLayoutParams(params3); + } + + @Override + public void onPageSelected(int position) { + //如果viewPager展示页面是页面最后一页 + if (position == mIcons.length - 1) { + mBtnDone.setVisibility(View.VISIBLE); + mIbNext.setVisibility(View.GONE); + mBtnSkip.setVisibility(View.GONE); + + } else { + //如果viewPager展示页面不是最后一页 + mBtnSkip.setVisibility(View.VISIBLE); + mIbNext.setVisibility(View.VISIBLE); + mBtnDone.setVisibility(View.GONE); + } + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + + } + + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.button_skip: + EnterMain(); + break; + case R.id.button_done: + EnterMain(); + break; + case R.id.imageButton_next: + mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1); + default: + break; + } + + } + + /** + * 定义进入主页的方法 + */ + private void EnterMain() { + startActivity(new Intent(GuideActivity.this, MainActivity.class)); + finish(); + } + + + +// protected void hideBottomUIMenu(){ +// if(Build.VERSION.SDK_INT>11 && Build.VERSION.SDK_INT<19){ +// View v = this.getWindow().getDecorView(); +// v.getSystemUiVisibility(View.GONE); +// } +// +// } + + + @Override + protected void onDestroy() { + super.onDestroy(); + ActivityCollector.removeActivity(this); + } +} diff --git a/app/src/main/java/com/skywalker/idouban/MainActivity.java b/app/src/main/java/com/skywalker/idouban/MainActivity.java index 0f1c6dc..03dfb61 100644 --- a/app/src/main/java/com/skywalker/idouban/MainActivity.java +++ b/app/src/main/java/com/skywalker/idouban/MainActivity.java @@ -8,27 +8,39 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; +import android.widget.Toast; +import com.skywalker.idouban.collector.ActivityCollector; import com.skywalker.idouban.ui.MainFragment; import com.skywalker.idouban.ui.SettingFragment; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { + //双击返回键 退出 + private static final int TIME_INTERVAL = 2000; + private long mBackPressed; + + private long exitTime = 0; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + ActivityCollector.addActivity(this); + if (savedInstanceState == null) { - MainFragment defaultFragment= new MainFragment(); + MainFragment defaultFragment = new MainFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.main_content, defaultFragment).commit(); } initView(); } - private void initView(){ + private void initView() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); @@ -52,15 +64,6 @@ public void onClick(View view) { //navigationView.setCheckedItem(R.id.nav_camera); } - @Override - public void onBackPressed() { - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - if (drawer.isDrawerOpen(GravityCompat.START)) { - drawer.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } @Override public boolean onCreateOptionsMenu(Menu menu) { @@ -90,16 +93,16 @@ public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); Fragment fragment; - switch (id){ + switch (id) { case R.id.nav_camera: - fragment=new MainFragment(); + fragment = new MainFragment(); break; case R.id.nav_gallery: - fragment=new SettingFragment(); + fragment = new SettingFragment(); + break; + default: + fragment = new SettingFragment(); break; - default: - fragment=new SettingFragment(); - break; } getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment).commit(); @@ -107,4 +110,27 @@ public boolean onNavigationItemSelected(MenuItem item) { drawer.closeDrawer(GravityCompat.START); return true; } + + /** + * 两秒内重复点手机底部导航返回键,APP弹出提示,并在第二次点击时退出程序 + */ + @Override + public void onBackPressed() { + DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + if (drawer.isDrawerOpen(GravityCompat.START)) { + drawer.closeDrawer(GravityCompat.START); + } + if ((System.currentTimeMillis() - exitTime) > 2000) { + Toast.makeText(getBaseContext(), "再次点击返回键退出", + Toast.LENGTH_SHORT).show(); + exitTime = System.currentTimeMillis(); + } else { + super.onBackPressed(); + //销毁全部活动,退出程序 + ActivityCollector.finishAll(); + System.exit(0); + } + + } + } diff --git a/app/src/main/java/com/skywalker/idouban/SplashActivity.java b/app/src/main/java/com/skywalker/idouban/SplashActivity.java new file mode 100644 index 0000000..b1b0ff3 --- /dev/null +++ b/app/src/main/java/com/skywalker/idouban/SplashActivity.java @@ -0,0 +1,65 @@ +package com.skywalker.idouban; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; +import android.view.WindowManager; + +import com.skywalker.idouban.collector.ActivityCollector; + +public class SplashActivity extends AppCompatActivity { + + private Handler mHandler=new Handler(); + private SharedPreferences mSp; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.e("Splash Activity","on create"); + setContentView(R.layout.activity_splash); + + ActivityCollector.addActivity(this); + + getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + + mSp=getSharedPreferences("config",MODE_PRIVATE); + final SharedPreferences.Editor editor=mSp.edit(); + + //默认第一次打开APP + boolean firstEnter=mSp.getBoolean("guide",true); + + + /** + * 如果是第一次打开,则进入引导页面 + * 引导页面画面结束之后,设置为非第一次进入APP + */ + if(firstEnter){ + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + startActivity(new Intent(SplashActivity.this,GuideActivity.class)); + finish(); + editor.putBoolean("guide",false); + editor.commit(); + } + },1000); + }else{ + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + startActivity(new Intent(SplashActivity.this,MainActivity.class)); + } + },2000); + } + } + + + @Override + protected void onDestroy() { + super.onDestroy(); + ActivityCollector.removeActivity(this); + } +} diff --git a/app/src/main/java/com/skywalker/idouban/adapter/GuideAdapter.java b/app/src/main/java/com/skywalker/idouban/adapter/GuideAdapter.java new file mode 100644 index 0000000..1cec102 --- /dev/null +++ b/app/src/main/java/com/skywalker/idouban/adapter/GuideAdapter.java @@ -0,0 +1,72 @@ +package com.skywalker.idouban.adapter; + +import android.support.v4.view.PagerAdapter; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import java.util.ArrayList; +import java.util.List; + +public class GuideAdapter extends PagerAdapter { + private List mImageList=new ArrayList<>(); + + + public GuideAdapter(List mImageList) { + this.mImageList=mImageList; + } + + /** + * 获取要显示图片的数量,这里为imageView的数量 + */ + @Override + public int getCount() { + return mImageList.size(); + } + +// @Override +// public boolean isViewFromObject(View view, Object object) { +// return false; +// } + + /** + * 此方法用于判断是否是同一张图片,这里将两个参数比较返回即可 + * @param view + * @param object + * @return + */ + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + + /** + * PagerAdapter只缓存四张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁 + * @param container + * @param position + * @param object + */ + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + // super.destroyItem(container, position, object); + container.removeView((View) object); + } + + + /** + * 当要显示图片可以进行缓存的时候,就会调用这个方法进行图片的初始化, + * 我们将imageView加入到viewGroup中,然后作为返回值返回即可 + * @param container + * @param position + * @return + */ + @Override + public Object instantiateItem(ViewGroup container, int position) { + // 将图片添加到ViewPager容器 + container.addView(mImageList.get(position)); + + return mImageList.get(position); + + } +} diff --git a/app/src/main/java/com/skywalker/idouban/collector/ActivityCollector.java b/app/src/main/java/com/skywalker/idouban/collector/ActivityCollector.java new file mode 100644 index 0000000..387a090 --- /dev/null +++ b/app/src/main/java/com/skywalker/idouban/collector/ActivityCollector.java @@ -0,0 +1,31 @@ +package com.skywalker.idouban.collector; + +import android.app.Activity; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by apex100528 on 2018/1/3. + * 此类用于管理Activity,主要为 添加、移除、结束所有Activity三个方法 + */ + +public class ActivityCollector { + public static List activities = new ArrayList<>(); + + public static void addActivity(Activity activity) { + activities.add(activity); + } + + public static void removeActivity(Activity activity) { + activities.remove(activity); + } + + public static void finishAll() { + for (Activity activity : activities) { + if (!activity.isFinishing()) { + activity.finish(); + } + } + } +} diff --git a/app/src/main/java/com/skywalker/idouban/ui/MainFragment.java b/app/src/main/java/com/skywalker/idouban/ui/MainFragment.java index 0ec0cae..a52bd41 100644 --- a/app/src/main/java/com/skywalker/idouban/ui/MainFragment.java +++ b/app/src/main/java/com/skywalker/idouban/ui/MainFragment.java @@ -19,7 +19,7 @@ public class MainFragment extends BaseFragment { @Override protected void initView(View view, Bundle savedInstanceState) { - ViewPager viewPager=view.findViewById(R.id.main_viewPager); + ViewPager viewPager=(ViewPager) view.findViewById(R.id.main_viewPager); BookFragment fragment1 = new BookFragment(); MusicFragment fragment2 =new MusicFragment(); MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getChildFragmentManager()); @@ -27,7 +27,7 @@ protected void initView(View view, Bundle savedInstanceState) { adapter.addItem(fragment2, "音乐"); viewPager.setAdapter(adapter); - TabLayout tabLayout=view.findViewById(R.id.tabLayout); + TabLayout tabLayout=(TabLayout)view.findViewById(R.id.tabLayout); tabLayout.setupWithViewPager(viewPager); } diff --git a/app/src/main/res/drawable/selectable_btn.xml b/app/src/main/res/drawable/selectable_btn.xml new file mode 100644 index 0000000..2832218 --- /dev/null +++ b/app/src/main/res/drawable/selectable_btn.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_point_normal.xml b/app/src/main/res/drawable/shape_point_normal.xml new file mode 100644 index 0000000..8379003 --- /dev/null +++ b/app/src/main/res/drawable/shape_point_normal.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_point_selected.xml b/app/src/main/res/drawable/shape_point_selected.xml new file mode 100644 index 0000000..f984d24 --- /dev/null +++ b/app/src/main/res/drawable/shape_point_selected.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_point_selector.xml b/app/src/main/res/drawable/shape_point_selector.xml new file mode 100644 index 0000000..0fde14b --- /dev/null +++ b/app/src/main/res/drawable/shape_point_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/splash_bg.png b/app/src/main/res/drawable/splash_bg.png new file mode 100644 index 0000000..f5aa5dd Binary files /dev/null and b/app/src/main/res/drawable/splash_bg.png differ diff --git a/app/src/main/res/layout/activity_guide.xml b/app/src/main/res/layout/activity_guide.xml new file mode 100644 index 0000000..cabcf78 --- /dev/null +++ b/app/src/main/res/layout/activity_guide.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + +