Selaa lähdekoodia

second commit

owen 7 vuotta sitten
vanhempi
commit
050e498cd3
100 muutettua tiedostoa jossa 1595 lisäystä ja 0 poistoa
  1. 10 0
      .gitignore
  2. BIN
      .idea/caches/build_file_checksums.ser
  3. 29 0
      .idea/codeStyles/Project.xml
  4. 19 0
      .idea/gradle.xml
  5. 34 0
      .idea/misc.xml
  6. 12 0
      .idea/runConfigurations.xml
  7. 1 0
      app/.gitignore
  8. 102 0
      app/build.gradle
  9. 1 0
      app/debug/output.json
  10. BIN
      app/debug/民心网app-测试环境-2018-0903-1435.apk
  11. 21 0
      app/proguard-rules.pro
  12. 26 0
      app/src/androidTest/java/com/wiipu/peopleheart/ExampleInstrumentedTest.java
  13. 39 0
      app/src/main/AndroidManifest.xml
  14. 196 0
      app/src/main/java/com/wiipu/peopleheart/MainActivity.java
  15. 65 0
      app/src/main/java/com/wiipu/peopleheart/application/App.java
  16. 20 0
      app/src/main/java/com/wiipu/peopleheart/application/Constants.java
  17. 138 0
      app/src/main/java/com/wiipu/peopleheart/cases/CaseFragment.java
  18. 16 0
      app/src/main/java/com/wiipu/peopleheart/home/HomeContract.java
  19. 46 0
      app/src/main/java/com/wiipu/peopleheart/home/HomeFragment.java
  20. 18 0
      app/src/main/java/com/wiipu/peopleheart/home/HomePresenter.java
  21. 106 0
      app/src/main/java/com/wiipu/peopleheart/info/InfoFragment.java
  22. 34 0
      app/src/main/res/drawable-v24/ic_launcher_foreground.xml
  23. BIN
      app/src/main/res/drawable/btn_close_blue.png
  24. BIN
      app/src/main/res/drawable/btn_return.png
  25. BIN
      app/src/main/res/drawable/btn_small_arrow.png
  26. BIN
      app/src/main/res/drawable/btn_small_arrow_up.png
  27. BIN
      app/src/main/res/drawable/choice_arrow.png
  28. BIN
      app/src/main/res/drawable/choice_arrow_big.png
  29. BIN
      app/src/main/res/drawable/choice_bg.png
  30. BIN
      app/src/main/res/drawable/choice_bg_big.png
  31. 6 0
      app/src/main/res/drawable/color_text_bottom_tab.xml
  32. BIN
      app/src/main/res/drawable/comment_btn_dissatisfied.png
  33. BIN
      app/src/main/res/drawable/comment_btn_dissatisfied_sel.png
  34. BIN
      app/src/main/res/drawable/comment_btn_normal.png
  35. BIN
      app/src/main/res/drawable/comment_btn_normal_sel.png
  36. BIN
      app/src/main/res/drawable/comment_btn_satisfied_sel.png
  37. BIN
      app/src/main/res/drawable/comment_btn_satisfiedl.png
  38. BIN
      app/src/main/res/drawable/details_adjustment_point.png
  39. BIN
      app/src/main/res/drawable/details_audio_play.png
  40. BIN
      app/src/main/res/drawable/details_video_play.png
  41. BIN
      app/src/main/res/drawable/home_btn_yijiantiwen.png
  42. BIN
      app/src/main/res/drawable/home_icon_banjian.png
  43. BIN
      app/src/main/res/drawable/home_icon_banjian_sel.png
  44. BIN
      app/src/main/res/drawable/home_icon_shouye.png
  45. BIN
      app/src/main/res/drawable/home_icon_shouye_sel.png
  46. BIN
      app/src/main/res/drawable/home_icon_zixun.png
  47. BIN
      app/src/main/res/drawable/home_icon_zixun_sel.png
  48. BIN
      app/src/main/res/drawable/home_logo.png
  49. 170 0
      app/src/main/res/drawable/ic_launcher_background.xml
  50. BIN
      app/src/main/res/drawable/icon_bumenliebiao.png
  51. BIN
      app/src/main/res/drawable/icon_dajiaping.png
  52. BIN
      app/src/main/res/drawable/icon_fengxingrexian.png
  53. BIN
      app/src/main/res/drawable/icon_huifulv.png
  54. BIN
      app/src/main/res/drawable/icon_huiminzhengce.png
  55. BIN
      app/src/main/res/drawable/icon_jianyanxiance.png
  56. BIN
      app/src/main/res/drawable/icon_manyipingjia.png
  57. BIN
      app/src/main/res/drawable/icon_mianduimain.png
  58. BIN
      app/src/main/res/drawable/icon_minshengshipin.png
  59. BIN
      app/src/main/res/drawable/icon_minshengxinwen.png
  60. BIN
      app/src/main/res/drawable/icon_minshnegqiuzhu.png
  61. BIN
      app/src/main/res/drawable/icon_shimindianzan.png
  62. BIN
      app/src/main/res/drawable/icon_tongzhigonggao.png
  63. BIN
      app/src/main/res/drawable/icon_tousujubao.png
  64. BIN
      app/src/main/res/drawable/icon_yijiantiwen.png
  65. BIN
      app/src/main/res/drawable/icon_youxiubanjian.png
  66. BIN
      app/src/main/res/drawable/icon_zhengcezixun.png
  67. BIN
      app/src/main/res/drawable/list_icon_default.png
  68. BIN
      app/src/main/res/drawable/list_icon_function.png
  69. BIN
      app/src/main/res/drawable/list_icon_video.png
  70. BIN
      app/src/main/res/drawable/pop_img_ok.png
  71. 5 0
      app/src/main/res/drawable/tab_case.xml
  72. 5 0
      app/src/main/res/drawable/tab_home.xml
  73. 5 0
      app/src/main/res/drawable/tab_info.xml
  74. 71 0
      app/src/main/res/layout/activity_main.xml
  75. 43 0
      app/src/main/res/layout/fragment_case.xml
  76. 25 0
      app/src/main/res/layout/fragment_home.xml
  77. 43 0
      app/src/main/res/layout/fragment_info.xml
  78. 5 0
      app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  79. 5 0
      app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  80. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher.png
  81. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  82. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher.png
  83. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  84. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher.png
  85. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  86. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  87. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  88. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  89. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  90. 6 0
      app/src/main/res/values/colors.xml
  91. 94 0
      app/src/main/res/values/dimens.xml
  92. 16 0
      app/src/main/res/values/strings.xml
  93. 22 0
      app/src/main/res/values/styles.xml
  94. 17 0
      app/src/test/java/com/wiipu/peopleheart/ExampleUnitTest.java
  95. 27 0
      build.gradle
  96. 1 0
      commonlib/.gitignore
  97. 49 0
      commonlib/build.gradle
  98. 21 0
      commonlib/proguard-rules.pro
  99. 26 0
      commonlib/src/androidTest/java/com/wiipu/commonlib/ExampleInstrumentedTest.java
  100. 0 0
      commonlib/src/main/AndroidManifest.xml

+ 10 - 0
.gitignore

@@ -0,0 +1,10 @@
+*.iml
+.gradle
+/local.properties
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild

BIN
.idea/caches/build_file_checksums.ser


+ 29 - 0
.idea/codeStyles/Project.xml

@@ -0,0 +1,29 @@
+<component name="ProjectCodeStyleConfiguration">
+  <code_scheme name="Project" version="173">
+    <Objective-C-extensions>
+      <file>
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
+      </file>
+      <class>
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
+      </class>
+      <extensions>
+        <pair source="cpp" header="h" fileNamingConvention="NONE" />
+        <pair source="c" header="h" fileNamingConvention="NONE" />
+      </extensions>
+    </Objective-C-extensions>
+  </code_scheme>
+</component>

+ 19 - 0
.idea/gradle.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="GradleSettings">
+    <option name="linkedExternalProjectsSettings">
+      <GradleProjectSettings>
+        <option name="distributionType" value="DEFAULT_WRAPPED" />
+        <option name="externalProjectPath" value="$PROJECT_DIR$" />
+        <option name="modules">
+          <set>
+            <option value="$PROJECT_DIR$" />
+            <option value="$PROJECT_DIR$/app" />
+            <option value="$PROJECT_DIR$/commonlib" />
+          </set>
+        </option>
+        <option name="resolveModulePerSourceSet" value="false" />
+      </GradleProjectSettings>
+    </option>
+  </component>
+</project>

+ 34 - 0
.idea/misc.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="NullableNotNullManager">
+    <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
+    <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
+    <option name="myNullables">
+      <value>
+        <list size="5">
+          <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
+          <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
+          <item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
+          <item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
+          <item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
+        </list>
+      </value>
+    </option>
+    <option name="myNotNulls">
+      <value>
+        <list size="4">
+          <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
+          <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
+          <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
+          <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
+        </list>
+      </value>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/build/classes" />
+  </component>
+  <component name="ProjectType">
+    <option name="id" value="Android" />
+  </component>
+</project>

+ 12 - 0
.idea/runConfigurations.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RunConfigurationProducerService">
+    <option name="ignoredProducers">
+      <set>
+        <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
+        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
+        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
+      </set>
+    </option>
+  </component>
+</project>

+ 1 - 0
app/.gitignore

@@ -0,0 +1 @@
+/build

+ 102 - 0
app/build.gradle

@@ -0,0 +1,102 @@
+apply plugin: 'com.android.application'
+
+android {
+    compileSdkVersion 27
+    defaultConfig {
+        applicationId "com.wiipu.peopleheart"
+        minSdkVersion 21
+        targetSdkVersion 27
+        versionCode 1
+        versionName "1.0"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+    }
+    lintOptions {
+        checkReleaseBuilds false
+        // Or, if you prefer, you can continue to check for errors in release builds,
+        // but continue the build even when errors are found:
+        abortOnError false
+    }
+
+    //签名
+    signingConfigs {
+        debug {
+            storeFile file("../keystore.jks")
+            storePassword "abcdabcd"
+            keyAlias "wiipu"
+            keyPassword "abcdabcd"
+            v1SigningEnabled true
+            v2SigningEnabled true
+        }
+        release {
+            storeFile file("../keystore.jks")
+            storePassword "abcdabcd"
+            keyAlias "wiipu"
+            keyPassword "abcdabcd"
+            v1SigningEnabled true
+            v2SigningEnabled true
+        }
+    }
+
+    buildTypes {
+        debug {
+            // 显示Log
+            buildConfigField "boolean", "LOG_DEBUG", "true"
+            //混淆
+            minifyEnabled false
+            //Zipalign优化
+            zipAlignEnabled true
+            //加载默认混淆配置文件
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            //签名
+            signingConfig signingConfigs.debug
+        }
+        release {
+            // 不显示Log
+            buildConfigField "boolean", "LOG_DEBUG", "false"
+            //混淆
+            minifyEnabled false
+            //Zipalign优化
+            zipAlignEnabled true
+            //加载默认混淆配置文件
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            //签名
+            signingConfig signingConfigs.release
+        }
+    }
+}
+
+dependencies {
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
+    implementation 'com.android.support:appcompat-v7:27.1.1'
+    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
+    implementation 'com.android.support:support-v4:27.1.1'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.2'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+    // RecycleView
+    implementation 'com.android.support:recyclerview-v7:27.1.1'
+    implementation project(':commonlib')
+
+    // RxJava + Retrofit
+    implementation 'io.reactivex:rxjava:1.3.0'
+    implementation 'io.reactivex:rxandroid:1.2.1'
+    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+    implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
+    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
+    // 方法数超过65535
+    implementation 'com.android.support:multidex:1.0.3'
+    // pick images from system photos
+    implementation 'com.lwkandroid:ImagePicker:1.4.0'
+    // crash检测工具
+    implementation 'com.tencent.bugly:crashreport:2.6.5'
+    //leakcanary 检测内存泄漏
+    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.1'
+    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
+    testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
+    // butterknife , view绑定
+    api 'com.jakewharton:butterknife:8.8.1'
+    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
+    //circleImageView
+    implementation 'de.hdodenhof:circleimageview:2.1.0'
+
+}

+ 1 - 0
app/debug/output.json

@@ -0,0 +1 @@
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug"},"path":"app-debug.apk","properties":{}}]

BIN
app/debug/民心网app-测试环境-2018-0903-1435.apk


+ 21 - 0
app/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
app/src/androidTest/java/com/wiipu/peopleheart/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package com.wiipu.peopleheart;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("com.wiipu.peopleheart", appContext.getPackageName());
+    }
+}

+ 39 - 0
app/src/main/AndroidManifest.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.wiipu.peopleheart">
+
+    <!--用于访问网络,网络定位需要上网-->
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <!--用于读取手机当前的状态-->
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+    <!--用于写入缓存数据到扩展存储卡-->
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+    <!--请求访问使用照相设备-->
+    <uses-permission android:name="android.permission.CAMERA" />
+    <!-- 获取设备网络状态,禁用后无法获取网络状态 -->
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <!-- 读取系统信息,包含系统版本等信息,用作统计 -->
+    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
+
+
+    <application
+        android:allowBackup="true"
+        android:name=".application.App"
+        android:icon="@drawable/comment_btn_satisfied_sel"
+        android:label="@string/app_name"
+        android:roundIcon="@drawable/comment_btn_satisfied_sel"
+        android:supportsRtl="true"
+        tools:replace="icon,label,theme"
+        android:theme="@style/AppTheme">
+        <activity android:name=".MainActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>

+ 196 - 0
app/src/main/java/com/wiipu/peopleheart/MainActivity.java

@@ -0,0 +1,196 @@
+package com.wiipu.peopleheart;
+
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.IdRes;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.RadioGroup;
+
+import com.wiipu.commonlib.base.BaseActivity;
+import com.wiipu.peopleheart.cases.CaseFragment;
+import com.wiipu.peopleheart.home.HomeFragment;
+import com.wiipu.peopleheart.info.InfoFragment;
+
+import java.util.List;
+
+/**
+ * 首页Activity 作为Fragment的容器
+ */
+
+public class MainActivity extends BaseActivity implements RadioGroup.OnCheckedChangeListener {
+
+    public static final int FRAGMENT_HOME = 0;
+    public static final int FRAGMENT_CASE = 1;
+    public static final int FRAGMENT_INFO = 2;
+
+    private FrameLayout mContainer;
+    private RadioGroup mRgBottom;
+
+
+    private HomeFragment mHomeFragment;
+    private CaseFragment mCaseFragment;
+    private InfoFragment mInfoFragment;
+
+
+    private int mCurFragmentId = -1;
+
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.activity_main;
+    }
+
+    @Override
+    protected void initViews() {
+
+        mContainer = getView(R.id.fl_main_container);
+        //底部栏
+        mRgBottom = getView(R.id.rg_main_bottom);
+        mRgBottom.check(R.id.tab_main_home);
+
+        //主页
+        setFragment(FRAGMENT_HOME);
+
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // 这里一定要在save为null时才加载Fragment,Fragment中onCreateView等生命周里加载根子Fragment同理
+        // 因为在页面重启时,Fragment会被保存恢复,而此时再加载Fragment会重复加载,导致重叠
+        // add,replace情况下,如果没有加入回退栈,则不判断也不会造成重叠;若加入回退栈,则也会造成重叠现象;
+        /*if(findFragmentByTag(rootFragmentTag) == null){
+            // 正常情况下去 加载根Fragment
+        }
+        */
+
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Override
+    protected void initListeners() {
+        mRgBottom.setOnCheckedChangeListener(this);
+    }
+
+    @Override
+    protected void initData() {
+
+
+    }
+
+    @Override
+    public void onClick(View v) {
+
+    }
+
+    @Override
+    public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
+        if (i == R.id.tab_main_home) {
+            setFragment(FRAGMENT_HOME);
+        } else if (i == R.id.tab_main_case) {
+            setFragment(FRAGMENT_CASE);
+        } else if (i == R.id.tab_main_info) {
+            setFragment(FRAGMENT_INFO);
+        }
+    }
+
+    private void setFragment(int fragmentId) {
+
+        if (mCurFragmentId != fragmentId) {
+            FragmentManager fm = getSupportFragmentManager();
+            FragmentTransaction ft = fm.beginTransaction();
+            Fragment fragment = getFragment(fragmentId);
+            if (fragment != null && !fragment.isAdded()) {
+                ft.add(R.id.fl_main_container, fragment, fragment.getTag());
+            }
+
+            List<Fragment> mFragments = fm.getFragments();
+            if (mFragments != null && mFragments.size() > 0) {
+                for (Fragment mFragment : mFragments) {
+                    ft.hide(mFragment);
+                }
+            }
+
+            ft.show(fragment);
+            mCurFragmentId = fragmentId;
+            ft.commitAllowingStateLoss();
+        }
+
+    }
+
+
+    private Fragment getFragment(int fragmentId) {
+        switch (fragmentId) {
+            case FRAGMENT_HOME:
+                if (mHomeFragment == null) {
+                    mHomeFragment = new HomeFragment();
+                }
+                return mHomeFragment;
+
+            case FRAGMENT_CASE:
+                if (mCaseFragment == null) {
+                    mCaseFragment = new CaseFragment();
+                }
+                return mCaseFragment;
+
+            case FRAGMENT_INFO:
+                if (mInfoFragment == null) {
+                    mInfoFragment = new InfoFragment();
+                }
+                return mInfoFragment;
+
+            default:
+                break;
+        }
+        return null;
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+        int fragmentId = intent.getIntExtra("fragment_id",FRAGMENT_HOME);
+        if(fragmentId == FRAGMENT_HOME){
+            mRgBottom.check(R.id.tab_main_home);
+        }
+        else if(fragmentId == FRAGMENT_CASE){
+            mRgBottom.check(R.id.tab_main_case);
+        }
+        else if(fragmentId == FRAGMENT_INFO){
+            mRgBottom.check(R.id.tab_main_info);
+        }
+
+    }
+
+    public static void start(Context context, int fragmentId){
+        Intent intent = new Intent(context,MainActivity.class);
+        intent.putExtra("fragment_id",fragmentId);
+        context.startActivity(intent);
+    }
+
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
+            if (mCurFragmentId == FRAGMENT_CASE) {
+                mCaseFragment.onBackPressed();
+                return true;
+            }else if (mCurFragmentId == FRAGMENT_INFO){
+                mInfoFragment.onBackPressed();
+                return true;
+            }
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+}

+ 65 - 0
app/src/main/java/com/wiipu/peopleheart/application/App.java

@@ -0,0 +1,65 @@
+package com.wiipu.peopleheart.application;
+
+
+
+/**
+ * CreatedBy: masker
+ * Date: 2017/6/13
+ * Description: 全局 application
+ */
+
+import android.app.Application;
+import android.content.Context;
+import android.support.multidex.MultiDex;
+
+import com.squareup.leakcanary.LeakCanary;
+import com.squareup.leakcanary.RefWatcher;
+import com.wiipu.commonlib.utils.permission.ContextUtils;
+
+/**
+ * Author: xxx
+ * Date: 2017/10/27
+ * Description: APP初始化,根据每个APP需要组件不同,进行初始化,暂时注释
+ */
+
+
+public class App extends Application {
+    public static Application INSTANCE = null;
+
+    public static RefWatcher getRefWatcher(Context context) {
+        App application = (App) context.getApplicationContext();
+        return application.refWatcher;
+    }
+    private RefWatcher refWatcher;
+    private static Context sContext;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        INSTANCE = this;
+        ContextUtils.init(this);
+        sContext = getApplicationContext();
+
+        //refWatcher = LeakCanary.install(this);
+
+        if (LeakCanary.isInAnalyzerProcess(this)) {
+            // This process is dedicated to LeakCanary for heap analysis.
+            // You should not init your app in this process.
+            return;
+        }
+
+    }
+
+    //全局context
+    public static Context getContext() {
+        return sContext;
+    }
+
+
+    @Override
+    protected void attachBaseContext(Context base) {
+        super.attachBaseContext(base);
+        MultiDex.install(this);
+    }
+
+}

+ 20 - 0
app/src/main/java/com/wiipu/peopleheart/application/Constants.java

@@ -0,0 +1,20 @@
+package com.wiipu.peopleheart.application;
+
+/**
+ * Author: ozqowen
+ * Date: 2018/9/2
+ * Description: 常量
+ */
+
+public class Constants {
+
+
+    public static final int SRC = 2;
+    public static final int DEFAULT_NONE = 0;
+
+    public static final int SC_NO_DATA = 321;
+    public static final int SC_OK = 200;
+    public static final int SC_RE_FOCUSED = 321;
+
+
+}

+ 138 - 0
app/src/main/java/com/wiipu/peopleheart/cases/CaseFragment.java

@@ -0,0 +1,138 @@
+package com.wiipu.peopleheart.cases;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.wiipu.commonlib.base.BaseMvpFragment;
+import com.wiipu.peopleheart.R;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import butterknife.Unbinder;
+
+
+public class CaseFragment extends BaseMvpFragment {
+
+
+    @BindView(R.id.wv_case)
+    WebView mWebView;
+    Unbinder unbinder;
+    @BindView(R.id.iv_back_case)
+    ImageView ivBackCase;
+    @BindView(R.id.tv_title_case)
+    TextView tvTitleCase;
+    @BindView(R.id.ll_case)
+    RelativeLayout llCase;
+
+    @Override
+    protected void attach() {
+
+    }
+
+    @Override
+    protected void detach() {
+
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.fragment_case;
+    }
+
+    @Override
+    protected void initViews() {
+        //设置WebView属性,能够执行Javascript脚本
+        mWebView.getSettings().setJavaScriptEnabled(true);
+        //加载需要显示的网页
+        mWebView.loadUrl("http://47.96.24.215/rongzhi110/weixinMinxin/allHanding_manage.php");
+        //设置web视图
+        //当用户点击了你的WebView中的一个链接,默认的行为是Android启动一个处理URL的应用,通常,默认的浏览器打开并下载目标URL。
+        // 可以在WebView中覆盖这一行为,使得连接仍在WebView中打开。
+        mWebView.setWebViewClient(new WebViewClient());
+
+       /*
+        mainWebView.canGoBack()
+        检测浏览器是否可以后退
+        返回bool值
+
+        mainWebView.goBack()
+        浏览器后退
+
+        mainWebView.canGoForwad()
+        检测浏览器是否可以前进
+        返回bool值
+
+        mainWebView.goForward()
+        浏览器前进
+
+        mainWebView.clearCache(true)
+        清除浏览器缓存
+
+        mainWebView.clearFormData()
+        清除浏览器表单数据
+
+        mainWebView.getUrl()
+        获取浏览器网址
+        返回string值
+
+        mainWebView.getTitle()
+        获取浏览器网页标题
+        返回string值
+
+        */
+    }
+
+    @Override
+    protected void initListeners() {
+
+    }
+
+    @Override
+    protected void initData() {
+       if (!TextUtils.isEmpty(mWebView.getTitle())) {
+           tvTitleCase.setText(mWebView.getTitle());
+       }
+    }
+
+    @Override
+    public void onClick(View v) {
+
+    }
+
+
+    public void onBackPressed() {
+        if (mWebView.canGoBack()) {
+            mWebView.goBack();
+        } else {
+            getActivity().finish();
+        }
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        // TODO: inflate a fragment view
+        View rootView = super.onCreateView(inflater, container, savedInstanceState);
+        unbinder = ButterKnife.bind(this, rootView);
+        return rootView;
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        unbinder.unbind();
+    }
+
+    @OnClick(R.id.iv_back_case)
+    public void onViewClicked() {
+        onBackPressed();
+    }
+}

+ 16 - 0
app/src/main/java/com/wiipu/peopleheart/home/HomeContract.java

@@ -0,0 +1,16 @@
+package com.wiipu.peopleheart.home;
+
+import com.wiipu.commonlib.base.BaseView;
+
+/**
+ * Created by elaine on 2018/4/28.
+ */
+
+public interface HomeContract {
+    interface View extends BaseView {
+        void showBargeView(String nums);
+    }
+    interface Presenter{
+        void getUnReadMessageNum(String id, String status);
+    }
+}

+ 46 - 0
app/src/main/java/com/wiipu/peopleheart/home/HomeFragment.java

@@ -0,0 +1,46 @@
+package com.wiipu.peopleheart.home;
+
+import android.view.View;
+
+import com.wiipu.commonlib.base.BaseMvpFragment;
+import com.wiipu.peopleheart.R;
+
+
+public class HomeFragment extends BaseMvpFragment {
+
+
+    @Override
+    protected void attach() {
+
+    }
+
+    @Override
+    protected void detach() {
+
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.fragment_home;
+    }
+
+    @Override
+    protected void initViews() {
+
+    }
+
+    @Override
+    protected void initListeners() {
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    @Override
+    public void onClick(View v) {
+
+    }
+}

+ 18 - 0
app/src/main/java/com/wiipu/peopleheart/home/HomePresenter.java

@@ -0,0 +1,18 @@
+package com.wiipu.peopleheart.home;
+
+import com.wiipu.commonlib.base.BasePresenter;
+
+/**
+ * Created by elaine on 2018/4/28.
+ */
+
+public class HomePresenter extends BasePresenter<HomeContract.View> implements HomeContract.Presenter{
+    public HomePresenter(HomeContract.View view) {
+        super(view);
+    }
+
+    @Override
+    public void getUnReadMessageNum(String id, String status) {
+
+    }
+}

+ 106 - 0
app/src/main/java/com/wiipu/peopleheart/info/InfoFragment.java

@@ -0,0 +1,106 @@
+package com.wiipu.peopleheart.info;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.wiipu.commonlib.base.BaseMvpFragment;
+import com.wiipu.peopleheart.R;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import butterknife.Unbinder;
+
+
+public class InfoFragment extends BaseMvpFragment {
+
+
+    @BindView(R.id.wv_info)
+    WebView mWebView;
+    Unbinder unbinder;
+    @BindView(R.id.iv_back_info)
+    ImageView ivBackInfo;
+    @BindView(R.id.tv_title_info)
+    TextView tvTitleInfo;
+    @BindView(R.id.ll_info)
+    RelativeLayout llInfo;
+
+    @Override
+    protected void attach() {
+
+    }
+
+    @Override
+    protected void detach() {
+
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.fragment_info;
+    }
+
+    @Override
+    protected void initViews() {
+        //设置WebView属性,能够执行Javascript脚本
+        mWebView.getSettings().setJavaScriptEnabled(true);
+        //加载需要显示的网页
+        mWebView.loadUrl("http://47.96.24.215/rongzhi110/weixinMinxin/policyNews.php");
+        //设置web视图
+        //当用户点击了你的WebView中的一个链接,默认的行为是Android启动一个处理URL的应用,通常,默认的浏览器打开并下载目标URL。
+        // 可以在WebView中覆盖这一行为,使得连接仍在WebView中打开。
+        mWebView.setWebViewClient(new WebViewClient());
+    }
+
+    @Override
+    protected void initListeners() {
+
+    }
+
+    @Override
+    protected void initData() {
+        if (!TextUtils.isEmpty(mWebView.getTitle())) {
+            tvTitleInfo.setText(mWebView.getTitle());
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+
+    }
+
+    public void onBackPressed() {
+        if (mWebView.canGoBack()) {
+            mWebView.goBack();
+        } else {
+            getActivity().finish();
+        }
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        // TODO: inflate a fragment view
+        View rootView = super.onCreateView(inflater, container, savedInstanceState);
+        unbinder = ButterKnife.bind(this, rootView);
+        return rootView;
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        unbinder.unbind();
+    }
+
+    @OnClick(R.id.iv_back_info)
+    public void onViewClicked() {
+        onBackPressed();
+    }
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 34 - 0
app/src/main/res/drawable-v24/ic_launcher_foreground.xml


BIN
app/src/main/res/drawable/btn_close_blue.png


BIN
app/src/main/res/drawable/btn_return.png


BIN
app/src/main/res/drawable/btn_small_arrow.png


BIN
app/src/main/res/drawable/btn_small_arrow_up.png


BIN
app/src/main/res/drawable/choice_arrow.png


BIN
app/src/main/res/drawable/choice_arrow_big.png


BIN
app/src/main/res/drawable/choice_bg.png


BIN
app/src/main/res/drawable/choice_bg_big.png


+ 6 - 0
app/src/main/res/drawable/color_text_bottom_tab.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector
+xmlns:android="http://schemas.android.com/apk/res/android">
+<item android:state_checked="true" android:color="@color/colorPrimary" />
+<item android:state_checked="false" android:color="@color/text_light_black"/>
+</selector>

BIN
app/src/main/res/drawable/comment_btn_dissatisfied.png


BIN
app/src/main/res/drawable/comment_btn_dissatisfied_sel.png


BIN
app/src/main/res/drawable/comment_btn_normal.png


BIN
app/src/main/res/drawable/comment_btn_normal_sel.png


BIN
app/src/main/res/drawable/comment_btn_satisfied_sel.png


BIN
app/src/main/res/drawable/comment_btn_satisfiedl.png


BIN
app/src/main/res/drawable/details_adjustment_point.png


BIN
app/src/main/res/drawable/details_audio_play.png


BIN
app/src/main/res/drawable/details_video_play.png


BIN
app/src/main/res/drawable/home_btn_yijiantiwen.png


BIN
app/src/main/res/drawable/home_icon_banjian.png


BIN
app/src/main/res/drawable/home_icon_banjian_sel.png


BIN
app/src/main/res/drawable/home_icon_shouye.png


BIN
app/src/main/res/drawable/home_icon_shouye_sel.png


BIN
app/src/main/res/drawable/home_icon_zixun.png


BIN
app/src/main/res/drawable/home_icon_zixun_sel.png


BIN
app/src/main/res/drawable/home_logo.png


+ 170 - 0
app/src/main/res/drawable/ic_launcher_background.xml

@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportHeight="108"
+    android:viewportWidth="108">
+    <path
+        android:fillColor="#26A69A"
+        android:pathData="M0,0h108v108h-108z" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M9,0L9,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,0L19,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M29,0L29,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M39,0L39,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M49,0L49,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M59,0L59,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M69,0L69,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M79,0L79,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M89,0L89,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M99,0L99,108"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,9L108,9"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,19L108,19"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,29L108,29"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,39L108,39"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,49L108,49"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,59L108,59"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,69L108,69"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,79L108,79"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,89L108,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,99L108,99"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,29L89,29"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,39L89,39"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,49L89,49"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,59L89,59"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,69L89,69"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,79L89,79"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M29,19L29,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M39,19L39,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M49,19L49,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M59,19L59,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M69,19L69,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M79,19L79,89"
+        android:strokeColor="#33FFFFFF"
+        android:strokeWidth="0.8" />
+</vector>

BIN
app/src/main/res/drawable/icon_bumenliebiao.png


BIN
app/src/main/res/drawable/icon_dajiaping.png


BIN
app/src/main/res/drawable/icon_fengxingrexian.png


BIN
app/src/main/res/drawable/icon_huifulv.png


BIN
app/src/main/res/drawable/icon_huiminzhengce.png


BIN
app/src/main/res/drawable/icon_jianyanxiance.png


BIN
app/src/main/res/drawable/icon_manyipingjia.png


BIN
app/src/main/res/drawable/icon_mianduimain.png


BIN
app/src/main/res/drawable/icon_minshengshipin.png


BIN
app/src/main/res/drawable/icon_minshengxinwen.png


BIN
app/src/main/res/drawable/icon_minshnegqiuzhu.png


BIN
app/src/main/res/drawable/icon_shimindianzan.png


BIN
app/src/main/res/drawable/icon_tongzhigonggao.png


BIN
app/src/main/res/drawable/icon_tousujubao.png


BIN
app/src/main/res/drawable/icon_yijiantiwen.png


BIN
app/src/main/res/drawable/icon_youxiubanjian.png


BIN
app/src/main/res/drawable/icon_zhengcezixun.png


BIN
app/src/main/res/drawable/list_icon_default.png


BIN
app/src/main/res/drawable/list_icon_function.png


BIN
app/src/main/res/drawable/list_icon_video.png


BIN
app/src/main/res/drawable/pop_img_ok.png


+ 5 - 0
app/src/main/res/drawable/tab_case.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_checked="false" android:drawable="@drawable/home_icon_banjian" />
+    <item android:state_checked="true" android:drawable="@drawable/home_icon_banjian_sel"/>
+</selector>

+ 5 - 0
app/src/main/res/drawable/tab_home.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_checked="false" android:drawable="@drawable/home_icon_shouye" />
+    <item android:state_checked="true" android:drawable="@drawable/home_icon_shouye_sel"/>
+</selector>

+ 5 - 0
app/src/main/res/drawable/tab_info.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_checked="false" android:drawable="@drawable/home_icon_zixun" />
+    <item android:state_checked="true" android:drawable="@drawable/home_icon_zixun_sel"/>
+</selector>

+ 71 - 0
app/src/main/res/layout/activity_main.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.wiipu.peopleheart.MainActivity">
+
+    <FrameLayout
+        android:id="@+id/fl_main_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_above="@+id/rl_main_bottom" />
+
+    <View
+        style="@style/horizontal_divider_style"
+        android:layout_above="@id/rl_main_bottom" />
+
+    <RelativeLayout
+        android:id="@+id/rl_main_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/margin80dp"
+        android:background="@color/white"
+        android:layout_alignParentBottom="true"
+        >
+        <RadioGroup
+            android:id="@+id/rg_main_bottom"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:paddingTop="8dp"
+            android:orientation="horizontal">
+            <RadioButton
+                android:id="@+id/tab_main_home"
+                android:checked="true"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:button="@null"
+                android:textSize="@dimen/textsize_12"
+                android:drawableTop="@drawable/tab_home"
+                android:drawablePadding="@dimen/margin2dp"
+                android:gravity="center"
+                android:text="@string/tv_main"
+                android:textColor="@drawable/color_text_bottom_tab" />
+
+            <RadioButton
+                android:id="@+id/tab_main_case"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:button="@null"
+                android:textSize="@dimen/textsize_12"
+                android:drawableTop="@drawable/tab_case"
+                android:gravity="center"
+                android:text="@string/tv_case"
+                android:textColor="@drawable/color_text_bottom_tab" />
+
+            <RadioButton
+                android:id="@+id/tab_main_info"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:button="@null"
+                android:drawableTop="@drawable/tab_info"
+                android:gravity="center"
+                android:text="@string/tv_info"
+                android:textColor="@drawable/color_text_bottom_tab" />
+        </RadioGroup>
+
+    </RelativeLayout>
+
+</RelativeLayout>

+ 43 - 0
app/src/main/res/layout/fragment_case.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    >
+
+    <RelativeLayout
+        android:id="@+id/ll_case"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/margin48dp"
+        android:background="@color/blue_black">
+
+        <ImageView
+            android:id="@+id/iv_back_case"
+            android:layout_width="@dimen/margin20dp"
+            android:layout_height="@dimen/margin20dp"
+            android:src="@drawable/ic_imagepicker_arrow_left"
+            android:layout_alignParentLeft="true"
+            android:layout_centerInParent="true"
+            android:layout_marginLeft="10dp"
+            />
+        <TextView
+            android:id="@+id/tv_title_case"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:textSize="@dimen/textsize_20"
+            android:textColor="@color/white"
+            android:layout_centerInParent="true"
+            android:text="@string/tv_title_case"
+            />
+
+    </RelativeLayout>
+
+    <WebView
+        android:layout_marginTop="@dimen/margin1dp"
+        android:id="@+id/wv_case"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        />
+
+</LinearLayout>

+ 25 - 0
app/src/main/res/layout/fragment_home.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/margin48dp"
+        android:background="@color/blue_black">
+
+        <ImageView
+            android:layout_width="@dimen/margin144dp"
+            android:layout_height="@dimen/margin36dp"
+            android:src="@drawable/home_logo"
+            android:layout_centerInParent="true"
+            />
+
+
+    </RelativeLayout>
+
+
+
+</LinearLayout>

+ 43 - 0
app/src/main/res/layout/fragment_info.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    >
+
+    <RelativeLayout
+        android:id="@+id/ll_info"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/margin48dp"
+        android:background="@color/blue_black">
+
+        <ImageView
+            android:id="@+id/iv_back_info"
+            android:layout_width="@dimen/margin20dp"
+            android:layout_height="@dimen/margin20dp"
+            android:src="@drawable/ic_imagepicker_arrow_left"
+            android:layout_alignParentLeft="true"
+            android:layout_centerInParent="true"
+            android:layout_marginLeft="10dp"
+            />
+        <TextView
+            android:id="@+id/tv_title_info"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:textSize="@dimen/textsize_20"
+            android:textColor="@color/white"
+            android:layout_centerInParent="true"
+            android:text="@string/tv_title_info"
+            />
+
+    </RelativeLayout>
+
+    <WebView
+        android:layout_marginTop="@dimen/margin1dp"
+        android:id="@+id/wv_info"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        />
+
+</LinearLayout>

+ 5 - 0
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@drawable/ic_launcher_background" />
+    <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon>

+ 5 - 0
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@drawable/ic_launcher_background" />
+    <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon>

BIN
app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-hdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-mdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png


+ 6 - 0
app/src/main/res/values/colors.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+</resources>

+ 94 - 0
app/src/main/res/values/dimens.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="textsize_11">11sp</dimen>
+    <dimen name="textsize_12">12sp</dimen>
+    <dimen name="textsize_14">14sp</dimen>
+    <dimen name="textsize_15">15sp</dimen>
+    <dimen name="textsize_16">16sp</dimen>
+    <dimen name="textsize_17">17sp</dimen>
+    <dimen name="textsize_18">18sp</dimen>
+    <dimen name="textsize_20">20sp</dimen>
+    <dimen name="textsize_21">21sp</dimen>
+    <dimen name="textsize_24">24sp</dimen>
+
+    <!--标题栏相关-->
+    <dimen name="toolbar_height">56dp</dimen>
+    <dimen name="textSize_toolbar_title">20sp</dimen>
+    <dimen name="padding_toolbar">15dp</dimen>
+
+    <dimen name="item_height_person_center">50dp</dimen>
+    <dimen name="item_padding">15dp</dimen>
+    <dimen name="status_bar_height">25dp</dimen>
+    <dimen name="top_bar_left_padding">16dp</dimen>
+    <dimen name="button_textSize">16sp</dimen>
+
+    <dimen name="margin1dp">1dp</dimen>
+    <dimen name="margin1.5dp">1.5dp</dimen>
+    <dimen name="margin2dp">2dp</dimen>
+    <dimen name="margin3dp">3dp</dimen>
+    <dimen name="margin4dp">4dp</dimen>
+    <dimen name="margin5dp">5dp</dimen>
+    <dimen name="margin6dp">6dp</dimen>
+    <dimen name="margin8dp">8dp</dimen>
+    <dimen name="margin9.5dp">9.5dp</dimen>
+    <dimen name="margin10dp">10dp</dimen>
+    <dimen name="margin10.5dp">10.5dp</dimen>
+    <dimen name="margin11dp">11dp</dimen>
+    <dimen name="margin12dp">12dp</dimen>
+    <dimen name="margin13dp">13dp</dimen>
+    <dimen name="margin15dp">15dp</dimen>
+    <dimen name="margin16dp">16dp</dimen>
+    <dimen name="margin18dp">18dp</dimen>
+    <dimen name="margin20dp">20dp</dimen>
+    <dimen name="margin20.5dp">20.5dp</dimen>
+    <dimen name="margin22dp">22dp</dimen>
+    <dimen name="margin25dp">25dp</dimen>
+    <dimen name="margin27dp">27dp</dimen>
+    <dimen name="margin28dp">28dp</dimen>
+    <dimen name="margin30dp">30dp</dimen>
+    <dimen name="margin32dp">32dp</dimen>
+    <dimen name="margin33dp">33dp</dimen>
+    <dimen name="margin36dp">36dp</dimen>
+    <dimen name="margin37dp">37dp</dimen>
+    <dimen name="margin38dp">38dp</dimen>
+    <dimen name="margin39dp">39dp</dimen>
+    <dimen name="margin40dp">40dp</dimen>
+    <dimen name="margin42dp">42dp</dimen>
+    <dimen name="margin44dp">44dp</dimen>
+    <dimen name="margin45dp">45dp</dimen>
+    <dimen name="margin47dp">47dp</dimen>
+    <dimen name="margin48dp">48dp</dimen>
+    <dimen name="margin50dp">50dp</dimen>
+    <dimen name="margin55dp">55dp</dimen>
+    <dimen name="margin56dp">56dp</dimen>
+    <dimen name="margin60dp">60dp</dimen>
+    <dimen name="margin61dp">61dp</dimen>
+    <dimen name="margin63dp">63dp</dimen>
+    <dimen name="margin65dp">65dp</dimen>
+    <dimen name="margin66dp">66dp</dimen>
+    <dimen name="margin67dp">67dp</dimen>
+    <dimen name="margin68dp">68dp</dimen>
+    <dimen name="margin70dp">70dp</dimen>
+    <dimen name="margin75dp">75dp</dimen>
+    <dimen name="margin80dp">80dp</dimen>
+    <dimen name="margin85dp">85dp</dimen>
+    <dimen name="margin90dp">90dp</dimen>
+    <dimen name="margin98dp">98dp</dimen>
+    <dimen name="margin100dp">100dp</dimen>
+    <dimen name="margin110dp">110dp</dimen>
+    <dimen name="margin112dp">112dp</dimen>
+    <dimen name="margin114dp">114dp</dimen>
+    <dimen name="margin120dp">120dp</dimen>
+    <dimen name="margin144dp">144dp</dimen>
+    <dimen name="margin150dp">150dp</dimen>
+    <dimen name="margin160dp">160dp</dimen>
+    <dimen name="margin165dp">165dp</dimen>
+    <dimen name="margin170dp">170dp</dimen>
+    <dimen name="margin200dp">200dp</dimen>
+    <dimen name="margin210dp">210dp</dimen>
+    <dimen name="margin215dp">215dp</dimen>
+    <dimen name="margin217dp">217dp</dimen>
+    <dimen name="margin230dp">230dp</dimen>
+    <dimen name="margin245dp">245dp</dimen>
+    <dimen name="margin290dp">290dp</dimen>
+</resources>

+ 16 - 0
app/src/main/res/values/strings.xml

@@ -0,0 +1,16 @@
+<resources>
+    <string name="app_name">民心网</string>
+
+    <string name="tv_main">首页</string>
+    <string name="tv_case">办件</string>
+    <string name="tv_info">资讯</string>
+
+
+    <string name="tv_title_case">全部办件</string>
+    <string name="tv_title_info">政策资讯</string>
+
+    <!-- TODO: Remove or change this placeholder text -->
+    <string name="hello_blank_fragment">Hello blank fragment</string>
+
+
+</resources>

+ 22 - 0
app/src/main/res/values/styles.xml

@@ -0,0 +1,22 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+
+    <!-- Base application theme. -->
+    <style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:includeFontPadding">false</item>
+        <item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item>
+        <item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent</item>
+        <item name="android:windowLightStatusBar"  tools:targetApi="m">true</item>
+    </style>
+
+    <!-- 顶部status bar透明的主题-->
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="BaseAppTheme"></style>
+
+    <!--toolbar格式,设置25dp间隔,避免数据和顶部栏重叠-->
+    <style name="LightToolbar" parent="@style/ThemeOverlay.AppCompat.Light">
+        <item name="android:paddingTop">@dimen/status_bar_height</item>
+        <!--<item name="android:textColorPrimary">@color/grey</item>-->
+    </style>
+
+</resources>

+ 17 - 0
app/src/test/java/com/wiipu/peopleheart/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package com.wiipu.peopleheart;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 27 - 0
build.gradle

@@ -0,0 +1,27 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+    
+    repositories {
+        google()
+        jcenter()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.1.3'
+        
+
+        // NOTE: Do not place your application dependencies here; they belong
+        // in the individual module build.gradle files
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        jcenter()
+    }
+}
+
+task clean(type: Delete) {
+    delete rootProject.buildDir
+}

+ 1 - 0
commonlib/.gitignore

@@ -0,0 +1 @@
+/build

+ 49 - 0
commonlib/build.gradle

@@ -0,0 +1,49 @@
+apply plugin: 'com.android.library'
+
+android {
+    compileSdkVersion 27
+    defaultConfig {
+        minSdkVersion 21
+        targetSdkVersion 27
+        versionCode 1
+        versionName "1.0"
+
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+
+}
+
+dependencies {
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
+    implementation 'com.android.support:appcompat-v7:27.1.1'
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'com.android.support.test:runner:1.0.2'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+    // RxJava + Retrofit
+    implementation 'io.reactivex:rxjava:1.3.0'
+    implementation 'io.reactivex:rxandroid:1.2.1'
+    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+    implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
+    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
+    // butterknife , view绑定
+    api 'com.jakewharton:butterknife:8.8.1'
+    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
+    // RecycleView
+    implementation 'com.android.support:recyclerview-v7:27.1.1'
+    // glide依赖
+    implementation 'com.github.bumptech.glide:glide:3.8.0'
+    // glide,高斯模糊
+    implementation 'com.github.bumptech.glide:glide:3.8.0'
+    implementation 'jp.wasabeef:glide-transformations:2.0.2'
+    // pick images from system photos
+    implementation 'com.lwkandroid:ImagePicker:1.4.0'
+    // log
+    implementation 'com.orhanobut:logger:2.1.1'
+}

+ 21 - 0
commonlib/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
commonlib/src/androidTest/java/com/wiipu/commonlib/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package com.wiipu.commonlib;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("com.wiipu.commonlib.test", appContext.getPackageName());
+    }
+}

+ 0 - 0
commonlib/src/main/AndroidManifest.xml


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä