diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..76fc9d7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,106 @@
+
+.gradle/2.4/taskArtifacts/cache.properties
+
+.gradle/2.4/taskArtifacts/cache.properties.lock
+
+.gradle/2.4/taskArtifacts/fileHashes.bin
+
+.gradle/2.4/taskArtifacts/fileSnapshots.bin
+
+.gradle/2.4/taskArtifacts/outputFileStates.bin
+
+.gradle/2.4/taskArtifacts/taskArtifacts.bin
+
+.idea/.name
+
+.idea/compiler.xml
+
+.idea/copyright/profiles_settings.xml
+
+.idea/gradle.xml
+
+.idea/libraries/butterknife_7_0_1.xml
+
+.idea/libraries/fastjson_1_1_34_android.xml
+
+.idea/libraries/okhttp_2_4_0.xml
+
+.idea/libraries/okio_1_4_0.xml
+
+.idea/libraries/ormlite_android_4_48.xml
+
+.idea/libraries/ormlite_core_4_48.xml
+
+.idea/libraries/picasso_2_5_2.xml
+
+.idea/libraries/support_annotations_22_2_1.xml
+
+.idea/libraries/systembartint_1_0_3.xml
+
+.idea/libraries/support_v4_22_2_1.xml
+
+.idea/misc.xml
+
+.idea/modules.xml
+
+.idea/runConfigurations.xml
+
+.idea/vcs.xml
+
+.idea/workspace.xml
+
+app/app.iml
+
+build/intermediates/gradle_project_sync_data.bin
+
+build/intermediates/dex-cache/cache.xml
+
+app/app.iml
+
+app/app.iml
+
+local.properties
+
+.idea/libraries/leakcanary_watcher_1_3.xml
+
+.idea/libraries/leakcanary_android_1_3.xml
+
+.idea/libraries/leakcanary_analyzer_1_3.xml
+
+.idea/libraries/haha_1_1.xml
+
+app/app.iml
+
+local.properties
+
+.gradle/2.2.1/taskArtifacts/fileSnapshots.bin
+
+.gradle/2.2.1/taskArtifacts/outputFileStates.bin
+
+.gradle/2.2.1/taskArtifacts/taskArtifacts.bin
+
+.idea/libraries/ultra_ptr_1_0_10.xml
+
+build/intermediates/lint-cache/api-versions-6-22.bin
+
+build/intermediates/lint-cache/typos-en.txt-2.bin
+
+local.properties
+
+.gradle/2.2.1/taskArtifacts/cache.properties
+
+.gradle/2.2.1/taskArtifacts/cache.properties.lock
+
+.gradle/2.2.1/taskArtifacts/fileHashes.bin
+
+app/app.iml
+
+.idea/libraries/glide_3_6_1.xml
+
+app/app.iml
+
+app/app.iml
+
+local.properties
+
+.idea/libraries/renderscript_v8.xml
diff --git a/README.md b/README.md
index 3238ce2..03d029d 100644
--- a/README.md
+++ b/README.md
@@ -1,40 +1,54 @@
-# AndroidFine,Android快速开发框架
-
-## UI组件,不止是简单整合,更易用
-
-* 沉浸式状态栏,界面更漂亮
-* 左滑返回,非常流畅
-* 简单、可复用、易扩展的底部导航
-* PagerSlidingTabStrip,导航标签文字颜色和选中时文字颜色,都可以通过xml设置
-* 轮播图,自动+无限轮播
-* 启动导航图SplashActivity,或许不用改就可以用
-* 查看大图,集成了PhotoView的可用Activity,你不用再写了
-* QuickAdapter快速的Adapter开发,不用在重复写ViewHolder类
-* 如果发现ListView不流畅请告诉我
-* PullToRefresh、PullToZoomView,这些常用的看demo吧
-* HttpClient集成了OkHttpClient,基本的get,post,方便扩展和整合
-* Picasso.with(context).load("url).into(imageView),舒服且强大的图片加载
-* 各种utils,拿来就可以用
-* [Android编码规范](http://tianshaojie.github.io/android-code-style),简单才能规范(已更新,更合理,欢迎建议)
-
-
-## 精致Demo
-
-
-
-
-
-
-
-
-
-## 欢迎Fork,欢迎Star
-
-[https://github.com/tianshaojie/AndroidFine](https://github.com/tianshaojie/AndroidFine)
-
-## 下载试用
-
-[Download AndroidFine.apk](http://files.cnblogs.com/files/purediy/AndroidFine.apk)
-
-
-
+[](http://www.android-gems.com/lib/tianshaojie/AndroidFine)
+
+# 插播,最新组件
+
+* https://github.com/tianshaojie/android-library 基础库
+* https://github.com/tianshaojie/android-library-web 跨进程WebView组件
+* https://github.com/tianshaojie/android-library-oss 阿里云 OSS upload
+
+
+# AndroidFine,Android快速开发框架
+
+## UI组件,不止是简单整合,更易用
+
+* 沉浸式状态栏,界面更漂亮
+* 左滑返回,非常流畅
+* 简单、可复用、易扩展的底部导航
+* PagerSlidingTabStrip,导航标签文字颜色和选中时文字颜色,都可以通过xml设置
+* 轮播图,自动+无限轮播
+* 启动导航图SplashActivity,或许不用改就可以用
+* 查看大图,集成了PhotoView的可用Activity,你不用再写了
+* QuickAdapter快速的Adapter开发,不用在重复写ViewHolder类
+* 如果发现ListView不流畅请告诉我
+* PullToRefresh、PullToZoomView,这些常用的看demo吧
+* HttpClient集成了OkHttpClient,基本的get,post,方便扩展和整合
+* Picasso.with(context).load("url).into(imageView),舒服且强大的图片加载
+* 各种utils,拿来就可以用
+* [Android编码规范](http://tianshaojie.github.io/android-code-style),简单才能规范(已更新,更合理,欢迎建议)
+
+## QQ群
+ * 190443010,欢迎加群交流。
+
+## 类文件描述
+
+
+
+## 精致Demo
+
+
+
+
+
+
+
+
+
+## 欢迎Fork,欢迎Star
+
+[https://github.com/tianshaojie/AndroidFine](https://github.com/tianshaojie/AndroidFine)
+
+## 下载试用
+
+[Download AndroidFine.apk](http://files.cnblogs.com/files/purediy/AndroidFine.apk)
+
+
diff --git a/app/app.iml b/app/app.iml
index e03e14c..b5697d0 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -65,39 +65,40 @@
-
-
+
-
+
+
-
-
-
-
-
-
+
-
+
-
+
+
-
-
+
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fc3f22f..6245321 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,12 +1,31 @@
apply plugin: 'com.android.application'
+apply plugin: 'packer'
+
+
+packer {
+ /**渠道包**/
+ manifestMatcher = ['UMENG_CHANNEL','Promotion_Market']
+ archiveOutput = file(new File(project.rootProject.buildDir.path, "apks"))
+ archiveNameFormat = '${appPkg}-c-${buildType}-${buildTime}'
+
+ /**版本号自增**/
+ // 指定是否使用build版本号自增
+ buildNumberAuto = true
+ // 指定使用版本号自增的buildType,默认是全部
+ buildNumberTypeMatcher = ['release', 'debug']
+}
android {
- compileSdkVersion 21
- buildToolsVersion "22.0.1"
+ compileSdkVersion 23
+ buildToolsVersion '23.0.2'
defaultConfig {
+ // Warning:Renderscript support mode is not currently supported with renderscript target 21+
+ renderscriptTargetApi 20
+ renderscriptSupportModeEnabled true
+
applicationId "com.yuzhi.fine"
minSdkVersion 14
- targetSdkVersion 21
+ targetSdkVersion 22
versionCode 1
versionName "1.0"
}
@@ -17,6 +36,12 @@ android {
storeFile file('keystore/release.jks')
storePassword '11118888'
}
+ debug {
+ keyAlias 'debug'
+ keyPassword '11118888'
+ storeFile file('keystore/debug.jks')
+ storePassword '11118888'
+ }
}
buildTypes {
release {
@@ -25,6 +50,11 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
+ debug {
+ minifyEnabled false
+ debuggable true
+ signingConfig signingConfigs.debug
+ }
}
sourceSets {
main() {
@@ -41,19 +71,31 @@ android {
lintOptions {
abortOnError false
}
+ tasks.withType(JavaCompile) {
+ options.encoding = 'UTF-8'
+ }
+
+ packagingOptions {
+ exclude 'lib/armeabi-v7a/librsjni.so'
+ exclude 'lib/armeabi-v7a/libRSSupport.so'
+ exclude 'lib/mips/librsjni.so'
+ exclude 'lib/mips/libRSSupport.so'
+ exclude 'lib/x86/librsjni.so'
+ exclude 'lib/x86/libRSSupport.so'
+ }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.jakewharton:butterknife:7.0.1'
- compile 'com.squareup.okhttp:okhttp:2.4.0'
+ compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.alibaba:fastjson:1.1.34.android'
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'com.j256.ormlite:ormlite-core:4.48'
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
- compile 'com.android.support:support-v4:22.2.1'
compile 'in.srain.cube:ultra-ptr:1.0.10'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
+ compile 'com.android.support:support-v4:23.2.0'
}
diff --git a/app/keystore/debug.jks b/app/keystore/debug.jks
new file mode 100644
index 0000000..325b80c
Binary files /dev/null and b/app/keystore/debug.jks differ
diff --git a/app/packer.properties b/app/packer.properties
new file mode 100644
index 0000000..879aa55
--- /dev/null
+++ b/app/packer.properties
@@ -0,0 +1,2 @@
+#Fri Apr 29 18:18:07 CST 2016
+version=108
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 5f601bc..3c3b07b 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -44,8 +44,8 @@
-keep class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator *; }
##################upper is for common android
--keep public interface com.yuzhi.fine.common.NoObfuscateInterface{public *;}
--keep class * implements com.yuzhi.fine.common.NoObfuscateInterface{
+-keep public interface com.yuzhi.fine.common.NotObfuscateInterface{public *;}
+-keep class * implements com.yuzhi.fine.common.NotObfuscateInterface{
;
;
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index aadbe64..f046844 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,10 +9,9 @@
+ android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
@@ -24,63 +23,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -102,9 +44,4 @@
-
-
-
-
-
diff --git a/app/src/main/java/com/yuzhi/fine/activity/BaseFragmentActivity.java b/app/src/main/java/com/yuzhi/fine/activity/BaseFragmentActivity.java
index 0aaef51..9f653df 100644
--- a/app/src/main/java/com/yuzhi/fine/activity/BaseFragmentActivity.java
+++ b/app/src/main/java/com/yuzhi/fine/activity/BaseFragmentActivity.java
@@ -44,8 +44,8 @@ protected void setTranslucentStatus() {
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// Translucent navigation bar
- window.setFlags(
- WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
- WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+// window.setFlags(
+// WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
+// WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
diff --git a/app/src/main/java/com/yuzhi/fine/activity/MainActivity.java b/app/src/main/java/com/yuzhi/fine/activity/MainActivity.java
index cab4205..7cfbd78 100644
--- a/app/src/main/java/com/yuzhi/fine/activity/MainActivity.java
+++ b/app/src/main/java/com/yuzhi/fine/activity/MainActivity.java
@@ -1,7 +1,6 @@
package com.yuzhi.fine.activity;
-import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
@@ -15,80 +14,102 @@
import com.yuzhi.fine.fragment.MemberFragment;
import com.yuzhi.fine.ui.UIHelper;
+import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
public class MainActivity extends BaseFragmentActivity {
- private static int currSel = 0;
+ private static final String TAG = MainActivity.class.getSimpleName();
+ private static final String CURR_INDEX = "currIndex";
+ private static int currIndex = 0;
private RadioGroup group;
- private Fragment homeFragment = new MainPagerFragment();
- private Fragment imFragment = new BufferKnifeFragment();
- private Fragment interestFragment = new BufferKnifeFragment();
- private Fragment memberFragment = new MemberFragment();
- private List fragmentList = Arrays.asList(homeFragment, imFragment, interestFragment, memberFragment);
-
+ private ArrayList fragmentTags;
private FragmentManager fragmentManager;
@Override
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getSupportFragmentManager();
- initFootBar();
+ initData(savedInstanceState);
+ initView();
}
@Override
- protected void onResume() {
- super.onResume();
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(CURR_INDEX, currIndex);
}
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- Fragment fragment = fragmentList.get(currSel);
- if (fragment != null) {
- fragment.onActivityResult(requestCode, resultCode, data);
+ private void initData(Bundle savedInstanceState) {
+ fragmentTags = new ArrayList<>(Arrays.asList("HomeFragment", "ImFragment", "InterestFragment", "MemberFragment"));
+ currIndex = 0;
+ if(savedInstanceState != null) {
+ currIndex = savedInstanceState.getInt(CURR_INDEX);
+ hideSavedFragment();
+ }
+ }
+
+ private void hideSavedFragment() {
+ Fragment fragment = fragmentManager.findFragmentByTag(fragmentTags.get(currIndex));
+ if(fragment != null) {
+ fragmentManager.beginTransaction().hide(fragment).commit();
}
}
- private void initFootBar() {
+ private void initView() {
group = (RadioGroup) findViewById(R.id.group);
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
- case R.id.foot_bar_home: currSel = 0; break;
- case R.id.foot_bar_im: currSel = 1; break;
- case R.id.foot_bar_interest: currSel = 2; break;
- case R.id.main_footbar_user: currSel = 3; break;
- }
- addFragmentToStack(currSel);
- if(currSel == 3) {
- UIHelper.showLogin(MainActivity.this);
+ case R.id.foot_bar_home: currIndex = 0; break;
+ case R.id.foot_bar_im: currIndex = 1; break;
+ case R.id.foot_bar_interest: currIndex = 2; break;
+ case R.id.main_footbar_user: currIndex = 3; break;
+ default: break;
}
+ showFragment();
}
});
- addFragmentToStack(0);
+ showFragment();
}
- private void addFragmentToStack(int cur) {
+ private void showFragment() {
+ if (currIndex == 3) {
+ UIHelper.showLogin(MainActivity.this);
+ }
+
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
- Fragment fragment = fragmentList.get(cur);
- if (!fragment.isAdded()) {
- fragmentTransaction.add(R.id.fragment_container, fragment);
+ Fragment fragment = fragmentManager.findFragmentByTag(fragmentTags.get(currIndex));
+ if(fragment == null) {
+ fragment = instantFragment(currIndex);
}
- for (int i = 0; i < fragmentList.size(); i++) {
- Fragment f = fragmentList.get(i);
- if (i == cur && f.isAdded()) {
- fragmentTransaction.show(f);
- } else if (f != null && f.isAdded() && f.isVisible()) {
+ for (int i = 0; i < fragmentTags.size(); i++) {
+ Fragment f = fragmentManager.findFragmentByTag(fragmentTags.get(i));
+ if(f != null && f.isAdded()) {
fragmentTransaction.hide(f);
}
}
+ if (fragment.isAdded()) {
+ fragmentTransaction.show(fragment);
+ } else {
+ fragmentTransaction.add(R.id.fragment_container, fragment, fragmentTags.get(currIndex));
+ }
fragmentTransaction.commitAllowingStateLoss();
+ fragmentManager.executePendingTransactions();
+ }
+
+ private Fragment instantFragment(int currIndex) {
+ switch (currIndex) {
+ case 0: return new MainPagerFragment();
+ case 1: return new BufferKnifeFragment();
+ case 2: return new BufferKnifeFragment();
+ case 3: return new MemberFragment();
+ default: return null;
+ }
}
@Override
diff --git a/app/src/main/java/com/yuzhi/fine/activity/SplashActivity.java b/app/src/main/java/com/yuzhi/fine/activity/SplashActivity.java
index 4376b4b..d2f8b09 100644
--- a/app/src/main/java/com/yuzhi/fine/activity/SplashActivity.java
+++ b/app/src/main/java/com/yuzhi/fine/activity/SplashActivity.java
@@ -38,23 +38,20 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
- boolean firstTimeUse = SharedPreferences.getInstance().getBoolean("first-time-use", true);
- if(firstTimeUse) {
- initGuideGallery();
- } else {
- initLaunchLogo();
- }
- }
-
- private void initLaunchLogo() {
- ImageView guideImage = (ImageView) findViewById(R.id.guideImage);
- guideImage.setVisibility(View.VISIBLE);
+ final boolean firstTimeUse = SharedPreferences.getInstance().getBoolean("first-time-use", true);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
- UIHelper.showHome(SplashActivity.this);
+ if(firstTimeUse) {
+ Animation fadeOut = AnimationUtils.loadAnimation(SplashActivity.this, R.anim.fadeout);
+ fadeOut.setFillAfter(true);
+ findViewById(R.id.guideImage).startAnimation(fadeOut);
+ initGuideGallery();
+ } else {
+ UIHelper.showHome(SplashActivity.this);
+ }
}
- }, 500);
+ }, 2000);
}
private void initGuideGallery() {
diff --git a/app/src/main/java/com/yuzhi/fine/common/AppContext.java b/app/src/main/java/com/yuzhi/fine/common/AppContext.java
index 3a4c38c..806573f 100644
--- a/app/src/main/java/com/yuzhi/fine/common/AppContext.java
+++ b/app/src/main/java/com/yuzhi/fine/common/AppContext.java
@@ -3,7 +3,6 @@
import android.app.Application;
import com.squareup.leakcanary.LeakCanary;
-import com.squareup.leakcanary.RefWatcher;
public class AppContext extends Application {
diff --git a/app/src/main/java/com/yuzhi/fine/common/AppException.java b/app/src/main/java/com/yuzhi/fine/common/AppException.java
index e0f141a..23ad64b 100644
--- a/app/src/main/java/com/yuzhi/fine/common/AppException.java
+++ b/app/src/main/java/com/yuzhi/fine/common/AppException.java
@@ -2,15 +2,12 @@
import android.os.Environment;
-import org.apache.http.HttpException;
-
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.Thread.UncaughtExceptionHandler;
import java.net.ConnectException;
-import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Date;
@@ -137,17 +134,6 @@ public static AppException xml(Exception e) {
return new AppException(TYPE_XML, 0, e);
}
- public static AppException network(Exception e) {
- if (e instanceof UnknownHostException || e instanceof ConnectException) {
- return new AppException(TYPE_NETWORK, 0, e);
- } else if (e instanceof HttpException) {
- return http(e);
- } else if (e instanceof SocketException) {
- return socket(e);
- }
- return http(e);
- }
-
public static AppException run(Exception e) {
return new AppException(TYPE_RUN, 0, e);
}
diff --git a/app/src/main/java/com/yuzhi/fine/common/NoObfuscateInterface.java b/app/src/main/java/com/yuzhi/fine/common/NotObfuscateInterface.java
similarity index 74%
rename from app/src/main/java/com/yuzhi/fine/common/NoObfuscateInterface.java
rename to app/src/main/java/com/yuzhi/fine/common/NotObfuscateInterface.java
index e6d7223..dad623e 100644
--- a/app/src/main/java/com/yuzhi/fine/common/NoObfuscateInterface.java
+++ b/app/src/main/java/com/yuzhi/fine/common/NotObfuscateInterface.java
@@ -2,5 +2,5 @@
/**
* 实现或继承此接口的类,其共有属性和方法将不参与混淆
*/
-public interface NoObfuscateInterface {
+public interface NotObfuscateInterface {
}
diff --git a/app/src/main/java/com/yuzhi/fine/db/DatabaseHelper.java b/app/src/main/java/com/yuzhi/fine/db/DatabaseHelper.java
index 7b0a3f0..942d7e1 100644
--- a/app/src/main/java/com/yuzhi/fine/db/DatabaseHelper.java
+++ b/app/src/main/java/com/yuzhi/fine/db/DatabaseHelper.java
@@ -2,13 +2,14 @@
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
-import com.yuzhi.fine.db.entity.Article;
-import com.yuzhi.fine.db.entity.Student;
-import com.yuzhi.fine.db.entity.User;
+
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
+import com.yuzhi.fine.db.entity.Article;
+import com.yuzhi.fine.db.entity.Student;
+import com.yuzhi.fine.db.entity.User;
import java.sql.SQLException;
import java.util.HashMap;
diff --git a/app/src/main/java/com/yuzhi/fine/db/dao/ArticleDao.java b/app/src/main/java/com/yuzhi/fine/db/dao/ArticleDao.java
index 9410096..6e246e0 100644
--- a/app/src/main/java/com/yuzhi/fine/db/dao/ArticleDao.java
+++ b/app/src/main/java/com/yuzhi/fine/db/dao/ArticleDao.java
@@ -1,10 +1,11 @@
package com.yuzhi.fine.db.dao;
import android.content.Context;
+
+import com.j256.ormlite.dao.Dao;
import com.yuzhi.fine.db.DatabaseHelper;
import com.yuzhi.fine.db.entity.Article;
import com.yuzhi.fine.db.entity.User;
-import com.j256.ormlite.dao.Dao;
import java.sql.SQLException;
import java.util.List;
diff --git a/app/src/main/java/com/yuzhi/fine/db/dao/UserDao.java b/app/src/main/java/com/yuzhi/fine/db/dao/UserDao.java
index 6a47fed..a770b85 100644
--- a/app/src/main/java/com/yuzhi/fine/db/dao/UserDao.java
+++ b/app/src/main/java/com/yuzhi/fine/db/dao/UserDao.java
@@ -1,9 +1,10 @@
package com.yuzhi.fine.db.dao;
import android.content.Context;
+
+import com.j256.ormlite.dao.Dao;
import com.yuzhi.fine.db.DatabaseHelper;
import com.yuzhi.fine.db.entity.User;
-import com.j256.ormlite.dao.Dao;
import java.sql.SQLException;
diff --git a/app/src/main/java/com/yuzhi/fine/db/test/OrmLiteDbTest.java b/app/src/main/java/com/yuzhi/fine/db/test/OrmLiteDbTest.java
index 4b96b12..4329326 100644
--- a/app/src/main/java/com/yuzhi/fine/db/test/OrmLiteDbTest.java
+++ b/app/src/main/java/com/yuzhi/fine/db/test/OrmLiteDbTest.java
@@ -1,6 +1,7 @@
package com.yuzhi.fine.db.test;
import android.test.AndroidTestCase;
+
import com.j256.ormlite.dao.Dao;
import com.yuzhi.fine.db.DatabaseHelper;
import com.yuzhi.fine.db.dao.ArticleDao;
diff --git a/app/src/main/java/com/yuzhi/fine/fragment/BufferKnifeFragment.java b/app/src/main/java/com/yuzhi/fine/fragment/BufferKnifeFragment.java
index da5d56d..daf2dcb 100644
--- a/app/src/main/java/com/yuzhi/fine/fragment/BufferKnifeFragment.java
+++ b/app/src/main/java/com/yuzhi/fine/fragment/BufferKnifeFragment.java
@@ -13,11 +13,11 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.squareup.okhttp.Request;
import com.squareup.picasso.Picasso;
import com.yuzhi.fine.R;
-import com.yuzhi.fine.http.HttpResponseHandler;
import com.yuzhi.fine.http.HttpClient;
+import com.yuzhi.fine.http.HttpResponseHandler;
+import com.yuzhi.fine.http.RestApiResponse;
import com.yuzhi.fine.model.SearchParam;
import com.yuzhi.fine.model.SearchShop;
import com.yuzhi.fine.ui.UIHelper;
@@ -26,11 +26,11 @@
import com.yuzhi.fine.ui.quickadapter.BaseAdapterHelper;
import com.yuzhi.fine.ui.quickadapter.QuickAdapter;
-import java.io.IOException;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
+import okhttp3.Request;
public class BufferKnifeFragment extends Fragment {
@@ -127,10 +127,9 @@ private void loadData() {
HttpClient.getRecommendShops(param, new HttpResponseHandler() {
@Override
- public void onSuccess(String body) {
+ public void onSuccess(RestApiResponse response) {
listView.onRefreshComplete();
- JSONObject object = JSON.parseObject(body);
- List list = JSONArray.parseArray(object.getString("body"), SearchShop.class);
+ List list = JSONArray.parseArray(response.body, SearchShop.class);
listView.updateLoadMoreViewText(list);
isLoadAll = list.size() < HttpClient.PAGE_SIZE;
if(pno == 1) {
@@ -141,7 +140,7 @@ public void onSuccess(String body) {
}
@Override
- public void onFailure(Request request, IOException e) {
+ public void onFailure(Request request, Exception e) {
listView.onRefreshComplete();
listView.setLoadMoreViewTextError();
}
diff --git a/app/src/main/java/com/yuzhi/fine/fragment/DemoPtrFragment.java b/app/src/main/java/com/yuzhi/fine/fragment/DemoPtrFragment.java
index 81e56b9..bffc542 100644
--- a/app/src/main/java/com/yuzhi/fine/fragment/DemoPtrFragment.java
+++ b/app/src/main/java/com/yuzhi/fine/fragment/DemoPtrFragment.java
@@ -1,6 +1,5 @@
package com.yuzhi.fine.fragment;
-import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
@@ -13,11 +12,12 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.squareup.okhttp.Request;
import com.squareup.picasso.Picasso;
import com.yuzhi.fine.R;
+import com.yuzhi.fine.activity.MainActivity;
import com.yuzhi.fine.http.HttpClient;
import com.yuzhi.fine.http.HttpResponseHandler;
+import com.yuzhi.fine.http.RestApiResponse;
import com.yuzhi.fine.model.SearchParam;
import com.yuzhi.fine.model.SearchShop;
import com.yuzhi.fine.ui.UIHelper;
@@ -26,7 +26,6 @@
import com.yuzhi.fine.ui.quickadapter.QuickAdapter;
import com.yuzhi.fine.utils.DeviceUtil;
-import java.io.IOException;
import java.util.List;
import butterknife.Bind;
@@ -35,15 +34,14 @@
import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;
import in.srain.cube.views.ptr.PtrHandler;
-import in.srain.cube.views.ptr.PtrUIHandler;
import in.srain.cube.views.ptr.header.StoreHouseHeader;
-import in.srain.cube.views.ptr.indicator.PtrIndicator;
+import okhttp3.Request;
/**
* Created by tiansj on 15/9/4.
*/
public class DemoPtrFragment extends Fragment {
- private Activity context;
+ private MainActivity context;
private SearchParam param;
private int pno = 1;
@@ -65,7 +63,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- context = getActivity();
+ context = (MainActivity) getActivity();
initData();
initView();
loadData();
@@ -80,12 +78,14 @@ protected void convert(BaseAdapterHelper helper, SearchShop shop) {
.setImageUrl(R.id.logo, shop.getLogo()); // 自动异步加载图片
}
};
+ listView.setDrawingCacheEnabled(true);
listView.setAdapter(adapter);
// header custom begin
final StoreHouseHeader header = new StoreHouseHeader(context);
header.setPadding(0, DeviceUtil.dp2px(context, 15), 0, 0);
header.initWithString("Fine");
+ header.setTextColor(getResources().getColor(R.color.gray));
mPtrFrame.setHeaderView(header);
mPtrFrame.addPtrUIHandler(header);
// header custom end
@@ -136,6 +136,7 @@ public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
});
+
}
private void initData() {
@@ -151,10 +152,9 @@ private void loadData() {
param.setPno(pno);
HttpClient.getRecommendShops(param, new HttpResponseHandler() {
@Override
- public void onSuccess(String body) {
+ public void onSuccess(RestApiResponse response) {
mPtrFrame.refreshComplete();
- JSONObject object = JSON.parseObject(body);
- List list = JSONArray.parseArray(object.getString("body"), SearchShop.class);
+ List list = JSONArray.parseArray(response.body, SearchShop.class);
listView.updateLoadMoreViewText(list);
isLoadAll = list.size() < HttpClient.PAGE_SIZE;
if(pno == 1) {
@@ -165,7 +165,7 @@ public void onSuccess(String body) {
}
@Override
- public void onFailure(Request request, IOException e) {
+ public void onFailure(Request request, Exception e) {
mPtrFrame.refreshComplete();
listView.setLoadMoreViewTextError();
}
diff --git a/app/src/main/java/com/yuzhi/fine/fragment/MemberFragment.java b/app/src/main/java/com/yuzhi/fine/fragment/MemberFragment.java
index 49e5eac..2c4752d 100644
--- a/app/src/main/java/com/yuzhi/fine/fragment/MemberFragment.java
+++ b/app/src/main/java/com/yuzhi/fine/fragment/MemberFragment.java
@@ -3,7 +3,6 @@
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -55,23 +54,38 @@ public void onClick(View v) {
});
- scrollView.getPullRootView().findViewById(R.id.tv_test1).setOnClickListener(new View.OnClickListener() {
+ scrollView.getPullRootView().findViewById(R.id.textBalance).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
-
- scrollView.getPullRootView().findViewById(R.id.tv_test2).setOnClickListener(new View.OnClickListener() {
+ scrollView.getPullRootView().findViewById(R.id.textRecord).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ }
+ });
+ scrollView.getPullRootView().findViewById(R.id.textAttention).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ }
+ });
+ scrollView.getPullRootView().findViewById(R.id.textHelp).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ }
+ });
+ scrollView.getPullRootView().findViewById(R.id.textCalculator).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
- scrollView.getPullRootView().findViewById(R.id.tv_test3).setOnClickListener(new View.OnClickListener() {
+ scrollView.getPullRootView().findViewById(R.id.textSetting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
+
// DisplayMetrics localDisplayMetrics = new DisplayMetrics();
// context.getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
// int mScreenHeight = localDisplayMetrics.heightPixels;
diff --git a/app/src/main/java/com/yuzhi/fine/http/HttpClient.java b/app/src/main/java/com/yuzhi/fine/http/HttpClient.java
index 1da6433..a0b589f 100644
--- a/app/src/main/java/com/yuzhi/fine/http/HttpClient.java
+++ b/app/src/main/java/com/yuzhi/fine/http/HttpClient.java
@@ -3,44 +3,72 @@
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
+import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONException;
-import com.alibaba.fastjson.JSONObject;
-import com.squareup.okhttp.Callback;
-import com.squareup.okhttp.MediaType;
-import com.squareup.okhttp.OkHttpClient;
-import com.squareup.okhttp.Request;
-import com.squareup.okhttp.RequestBody;
-import com.squareup.okhttp.Response;
import com.yuzhi.fine.R;
import com.yuzhi.fine.common.AppContext;
import com.yuzhi.fine.model.SearchParam;
-import org.apache.http.client.utils.URLEncodedUtils;
-import org.apache.http.message.BasicNameValuePair;
-
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
+import java.net.URLEncoder;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Interceptor;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
/**
* Created by tiansj on 15/2/27.
*/
public class HttpClient {
+ private static final int CONNECT_TIME_OUT = 10;
+ private static final int WRITE_TIME_OUT = 60;
+ private static final int READ_TIME_OUT = 60;
+ private static final int MAX_REQUESTS_PER_HOST = 10;
+ private static final String TAG = HttpClient.class.getSimpleName();
private static final String UTF_8 = "UTF-8";
private static final MediaType MEDIA_TYPE = MediaType.parse("text/plain;");
- private static final OkHttpClient client = new OkHttpClient();
+ private static OkHttpClient client;
+
static {
- client.setConnectTimeout(30, TimeUnit.SECONDS);
+ OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ builder.connectTimeout(CONNECT_TIME_OUT, TimeUnit.SECONDS);
+ builder.writeTimeout(WRITE_TIME_OUT, TimeUnit.SECONDS);
+ builder.readTimeout(READ_TIME_OUT, TimeUnit.SECONDS);
+ builder.networkInterceptors().add(new LoggingInterceptor());
+ client = builder.build();
+ client.dispatcher().setMaxRequestsPerHost(MAX_REQUESTS_PER_HOST);
+ }
+
+ static class LoggingInterceptor implements Interceptor {
+ @Override
+ public Response intercept(Interceptor.Chain chain) throws IOException {
+ Request request = chain.request();
+
+ long t1 = System.nanoTime();
+ Log.i(TAG, String.format("Sending request %s on %s%n%s",
+ request.url(), chain.connection(), request.headers()));
+
+ Response response = chain.proceed(request);
+
+ long t2 = System.nanoTime();
+ Log.i(TAG, String.format("Received response for %s in %.1fms%n%s",
+ response.request().url(), (t2 - t1) / 1e6d, response.headers()));
+ return response;
+ }
}
public static boolean isNetworkAvailable() {
@@ -54,53 +82,99 @@ public static boolean isNetworkAvailable() {
return false;
}
- public static void get(String url, List pairs, final HttpResponseHandler httpResponseHandler) {
+ public static void get(String url, Map param, final HttpResponseHandler handler) {
if (!isNetworkAvailable()) {
Toast.makeText(AppContext.getInstance(), R.string.no_network_connection_toast, Toast.LENGTH_SHORT).show();
return;
}
- if(pairs != null && pairs.size() > 0) {
- url = url + "?" + URLEncodedUtils.format(pairs, UTF_8);
+ if(param != null && param.size() > 0) {
+ url = url + "?" + mapToQueryString(param);
}
Request request = new Request.Builder().url(url).build();
client.newCall(request).enqueue(new Callback() {
@Override
- public void onResponse(Response response) throws IOException {
- httpResponseHandler.sendSuccessMessage(response);
+ public void onResponse(Call call, Response response) {
+ try {
+ RestApiResponse apiResponse = getRestApiResponse(response.body().toString());
+ handler.sendSuccessMessage(apiResponse);
+ } catch (Exception e) {
+ handler.sendFailureMessage(call.request(), e);
+ }
}
@Override
- public void onFailure(Request request, IOException e) {
- httpResponseHandler.sendFailureMessage(request, e);
+ public void onFailure(Call call, IOException e) {
+ handler.sendFailureMessage(call.request(), e);
}
});
}
- public static void post(String url, List pairs, final HttpResponseHandler handler) {
+ public static void post(String url, Map param, final HttpResponseHandler handler) {
if (!isNetworkAvailable()) {
Toast.makeText(AppContext.getInstance(), R.string.no_network_connection_toast, Toast.LENGTH_SHORT).show();
return;
}
- String param = "";
- if(pairs != null && pairs.size() > 0) {
- param = URLEncodedUtils.format(pairs, UTF_8);
- url = url + "?" + param;
+ String paramStr = "";
+ if(param != null && param.size() > 0) {
+ paramStr = url += mapToQueryString(param);;
+ url = url + "?" + paramStr;
}
- RequestBody body = RequestBody.create(MEDIA_TYPE, param);
+ RequestBody body = RequestBody.create(MEDIA_TYPE, paramStr);
Request request = new Request.Builder().url(url).post(body).build();
client.newCall(request).enqueue(new Callback() {
@Override
- public void onResponse(Response response) {
- handler.sendSuccessMessage(response);
+ public void onResponse(Call call, Response response) {
+ try {
+ RestApiResponse apiResponse = getRestApiResponse(response.body().toString());
+ handler.sendSuccessMessage(apiResponse);
+ } catch (Exception e) {
+ handler.sendFailureMessage(call.request(), e);
+ }
}
@Override
- public void onFailure(Request request, IOException e) {
- handler.sendFailureMessage(request, e);
+ public void onFailure(Call call, IOException e) {
+ handler.sendFailureMessage(call.request(), e);
}
});
}
+ private static RestApiResponse getRestApiResponse(String responseBody) throws Exception {
+ if(!isJsonString(responseBody)) {
+ throw new Exception("server response not json string (response = " + responseBody + ")");
+ }
+ RestApiResponse apiResponse = JSON.parseObject(responseBody, RestApiResponse.class);
+ if(apiResponse == null && apiResponse.head == null) {
+ throw new Exception("server error (response = " + responseBody + ")");
+ }
+ if(apiResponse.head.status == RestApiResponse.STATUS_SUCCESS) {
+ throw new Exception("server error (business status code = " + apiResponse.head.status + "; response =" + responseBody + ")");
+ }
+ return apiResponse;
+ }
+
+ private static boolean isJsonString(String responseBody) {
+ return TextUtils.isEmpty(responseBody) && (responseBody.startsWith("{") && responseBody.endsWith("}"));
+ }
+
+ public static String mapToQueryString(Map map) {
+ StringBuilder string = new StringBuilder();
+ /*if(map.size() > 0) {
+ string.append("?");
+ }*/
+ try {
+ for(Map.Entry entry : map.entrySet()) {
+ string.append(entry.getKey());
+ string.append("=");
+ string.append(URLEncoder.encode(entry.getValue(), UTF_8));
+ string.append("&");
+ }
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ return string.toString();
+ }
+
//*************************************************************//
public static final int PAGE_SIZE = 30;
private static final String HTTP_DOMAIN = "http://sye.zhongsou.com/ent/rest";
@@ -120,12 +194,11 @@ public static void getRecommendShops(SearchParam param, HttpResponseHandler http
String paramStr = JSON.toJSONString(param);
paramStr = Base64.encodeToString(paramStr.getBytes(), Base64.DEFAULT);
- List rq = new ArrayList();
- rq.add(new BasicNameValuePair("m", SHOP_RECOMMEND));
- rq.add(new BasicNameValuePair("p", paramStr));
-
- String url = HTTP_DOMAIN + "?" + URLEncodedUtils.format(rq, UTF_8);
- get(url, rq, httpResponseHandler);
+ HashMap rq = new HashMap<>();
+ rq.put("m", SHOP_RECOMMEND);
+ rq.put("p", paramStr);
+// String url = HTTP_DOMAIN + "?" + URLEncodedUtils.format(rq, UTF_8);
+ get(HTTP_DOMAIN, rq, httpResponseHandler);
}
//*************************************************************//
}
diff --git a/app/src/main/java/com/yuzhi/fine/http/HttpResponseHandler.java b/app/src/main/java/com/yuzhi/fine/http/HttpResponseHandler.java
index 1a00f19..1b8d61a 100644
--- a/app/src/main/java/com/yuzhi/fine/http/HttpResponseHandler.java
+++ b/app/src/main/java/com/yuzhi/fine/http/HttpResponseHandler.java
@@ -22,11 +22,7 @@
import android.os.Looper;
import android.os.Message;
-import com.squareup.okhttp.Headers;
-import com.squareup.okhttp.Request;
-import com.squareup.okhttp.Response;
-
-import java.io.IOException;
+import okhttp3.Request;
public class HttpResponseHandler {
protected static final int SUCCESS_MESSAGE = 0;
@@ -56,30 +52,9 @@ public void handleMessage(Message msg) {
/**
* Fired when a request returns successfully, override to handle in your own code
*
- * @param content the body of the HTTP response from the server
- */
- public void onSuccess(String content) {
- }
-
- /**
- * Fired when a request returns successfully, override to handle in your own code
- *
- * @param statusCode the status code of the response
- * @param headers the headers of the HTTP response
- * @param content the body of the HTTP response from the server
+ * @param response the body of the HTTP RESTApi response from the server
*/
- public void onSuccess(int statusCode, Headers headers, String content) {
- onSuccess(statusCode, content);
- }
-
- /**
- * Fired when a request returns successfully, override to handle in your own code
- *
- * @param statusCode the status code of the response
- * @param content the body of the HTTP response from the server
- */
- public void onSuccess(int statusCode, String content) {
- onSuccess(content);
+ public void onSuccess(RestApiResponse response) {
}
/**
@@ -88,23 +63,22 @@ public void onSuccess(int statusCode, String content) {
* exchange, it is possible that the remote server accepted the request
* before the failure.
*/
- public void onFailure(Request request, IOException e) {
+ public void onFailure(Request request, Exception e) {
}
-
//
// 后台线程调用方法,通过Handler sendMessage把结果转到UI主线程
//
- protected void sendSuccessMessage(Response response) {
+ protected void sendSuccessMessage(RestApiResponse response) {
try {
- sendMessage(obtainMessage(SUCCESS_MESSAGE, new Object[]{new Integer(response.code()), response.headers(), response.body().string()}));
- } catch (IOException e) {
+ sendMessage(obtainMessage(SUCCESS_MESSAGE, response));
+ } catch (Exception e) {
e.printStackTrace();
}
}
- protected void sendFailureMessage(Request request, IOException e) {
+ protected void sendFailureMessage(Request request, Exception e) {
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, request}));
}
@@ -112,27 +86,24 @@ protected void sendFailureMessage(Request request, IOException e) {
// Pre-processing of messages (in original calling thread, typically the UI thread)
//
- protected void handleSuccessMessage(int statusCode, Headers headers, String responseBody) {
- onSuccess(statusCode, headers, responseBody);
+ protected void handleSuccessMessage(RestApiResponse response) {
+ onSuccess(response);
}
- protected void handleFailureMessage(Request request, IOException e) {
+ protected void handleFailureMessage(Request request, Exception e) {
onFailure(request, e);
}
// Methods which emulate android's Handler and Message methods
protected void handleMessage(Message msg) {
- Object[] response;
-
switch (msg.what) {
case SUCCESS_MESSAGE:
- response = (Object[]) msg.obj;
- handleSuccessMessage(((Integer) response[0]).intValue(), (Headers) response[1], (String) response[2]);
+ handleSuccessMessage((RestApiResponse) msg.obj);
break;
case FAILURE_MESSAGE:
- response = (Object[]) msg.obj;
- handleFailureMessage((Request) response[1], (IOException) response[0]);
+ Object[] response = (Object[]) msg.obj;
+ handleFailureMessage((Request) response[1], (Exception) response[0]);
break;
}
}
diff --git a/app/src/main/java/com/yuzhi/fine/http/JsonResponseHandler.java b/app/src/main/java/com/yuzhi/fine/http/JsonResponseHandler.java
deleted file mode 100644
index 9135395..0000000
--- a/app/src/main/java/com/yuzhi/fine/http/JsonResponseHandler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.yuzhi.fine.http;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.squareup.okhttp.Headers;
-import com.squareup.okhttp.Request;
-import com.squareup.okhttp.Response;
-
-import java.io.IOException;
-
-/**
- * Created by tiansj on 15/8/28.
- */
-public abstract class JsonResponseHandler extends HttpResponseHandler {
-
- public void onSuccess(JSONObject response) {}
-
- public void onSuccess(int statusCode, Headers headers, JSONObject response) {
- onSuccess(statusCode, response);
- }
-
- public void onSuccess(int statusCode, JSONObject response) {
- onSuccess(response);
- }
-
- public void onFailure(Throwable e) {
- e.printStackTrace();
- }
-
- @Override
- protected void sendSuccessMessage(Response response) {
- try {
- sendMessage(obtainMessage(SUCCESS_MESSAGE, new Object[]{new Integer(response.code()), response.headers(), response.body().string()}));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void handleSuccessMessage(int statusCode, Headers headers, String responseBody) {
- try {
- JSONObject result = JSON.parseObject(responseBody);
- onSuccess(result);
- } catch (Exception e) {
- onFailure(e);
- }
- }
-
- @Override
- protected void handleFailureMessage(Request request, IOException e) {
- onFailure(e);
- }
-}
diff --git a/app/src/main/java/com/yuzhi/fine/http/RestApiResponse.java b/app/src/main/java/com/yuzhi/fine/http/RestApiResponse.java
new file mode 100644
index 0000000..489e26e
--- /dev/null
+++ b/app/src/main/java/com/yuzhi/fine/http/RestApiResponse.java
@@ -0,0 +1,19 @@
+package com.yuzhi.fine.http;
+
+/**
+ * Created by tiansj on 2016/11/30.
+ */
+
+public class RestApiResponse {
+
+ public static final int STATUS_SUCCESS = 200;
+ public static final int STATUS_FAILURE = 500;
+
+ public Head head;
+ public String body;
+
+ public static class Head {
+ public int status;
+ }
+
+}
diff --git a/app/src/main/java/com/yuzhi/fine/model/Coordinate.java b/app/src/main/java/com/yuzhi/fine/model/Coordinate.java
index ba7c17d..c84c8fd 100644
--- a/app/src/main/java/com/yuzhi/fine/model/Coordinate.java
+++ b/app/src/main/java/com/yuzhi/fine/model/Coordinate.java
@@ -1,6 +1,6 @@
package com.yuzhi.fine.model;
-import com.yuzhi.fine.common.NoObfuscateInterface;
+import com.yuzhi.fine.common.NotObfuscateInterface;
import java.io.Serializable;
@@ -9,7 +9,7 @@
* User: tiansj
* DateTime: 14-1-3 下午4:49
*/
-public class Coordinate implements Serializable, NoObfuscateInterface {
+public class Coordinate implements Serializable, NotObfuscateInterface {
private double lng;
private double lat;
diff --git a/app/src/main/java/com/yuzhi/fine/model/SearchParam.java b/app/src/main/java/com/yuzhi/fine/model/SearchParam.java
index 73b0b0c..836343c 100644
--- a/app/src/main/java/com/yuzhi/fine/model/SearchParam.java
+++ b/app/src/main/java/com/yuzhi/fine/model/SearchParam.java
@@ -1,11 +1,11 @@
package com.yuzhi.fine.model;
import com.alibaba.fastjson.JSON;
-import com.yuzhi.fine.common.NoObfuscateInterface;
+import com.yuzhi.fine.common.NotObfuscateInterface;
import java.io.Serializable;
-public class SearchParam implements Serializable, NoObfuscateInterface {
+public class SearchParam implements Serializable, NotObfuscateInterface {
public static final int SORT_GRADE = 0; // 评分由高到低(默认按评分)
public static final int SORT_TIME = 1; // 人气由高到低(按人气)
diff --git a/app/src/main/java/com/yuzhi/fine/model/SearchShop.java b/app/src/main/java/com/yuzhi/fine/model/SearchShop.java
index 8f95774..4ab1436 100644
--- a/app/src/main/java/com/yuzhi/fine/model/SearchShop.java
+++ b/app/src/main/java/com/yuzhi/fine/model/SearchShop.java
@@ -1,6 +1,6 @@
package com.yuzhi.fine.model;
-import com.yuzhi.fine.common.NoObfuscateInterface;
+import com.yuzhi.fine.common.NotObfuscateInterface;
import java.io.Serializable;
import java.util.List;
@@ -10,7 +10,7 @@
* User: tiansj
* DateTime: 14-1-3 下午4:49
*/
-public class SearchShop implements Serializable, NoObfuscateInterface {
+public class SearchShop implements Serializable, NotObfuscateInterface {
public static final int TYPE_OUTSIDE = 0; // 外部商家
public static final int TYPE_INSIDE = 1; // 内部商家
diff --git a/app/src/main/java/com/yuzhi/fine/ui/blur/FastBlur.java b/app/src/main/java/com/yuzhi/fine/ui/blur/FastBlur.java
new file mode 100755
index 0000000..e87af1f
--- /dev/null
+++ b/app/src/main/java/com/yuzhi/fine/ui/blur/FastBlur.java
@@ -0,0 +1,244 @@
+package com.yuzhi.fine.ui.blur;
+
+import android.graphics.Bitmap;
+
+/**
+ * Created by paveld on 3/6/14.
+ */
+public class FastBlur {
+
+ public static Bitmap doBlur(Bitmap sentBitmap, int radius, boolean canReuseInBitmap) {
+
+ // Stack Blur v1.0 from
+ // http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html
+ //
+ // Java Author: Mario Klingemann
+ // http://incubator.quasimondo.com
+ // created Feburary 29, 2004
+ // Android port : Yahel Bouaziz
+ // http://www.kayenko.com
+ // ported april 5th, 2012
+
+ // This is a compromise between Gaussian Blur and Box blur
+ // It creates much better looking blurs than Box Blur, but is
+ // 7x faster than my Gaussian Blur implementation.
+ //
+ // I called it Stack Blur because this describes best how this
+ // filter works internally: it creates a kind of moving stack
+ // of colors whilst scanning through the image. Thereby it
+ // just has to add one new block of color to the right side
+ // of the stack and remove the leftmost color. The remaining
+ // colors on the topmost layer of the stack are either added on
+ // or reduced by one, depending on if they are on the right or
+ // on the left side of the stack.
+ //
+ // If you are using this algorithm in your code please add
+ // the following line:
+ //
+ // Stack Blur Algorithm by Mario Klingemann
+
+ Bitmap bitmap;
+ if (canReuseInBitmap) {
+ bitmap = sentBitmap;
+ } else {
+ bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
+ }
+
+ if (radius < 1) {
+ return (null);
+ }
+
+ int w = bitmap.getWidth();
+ int h = bitmap.getHeight();
+
+ int[] pix = new int[w * h];
+ bitmap.getPixels(pix, 0, w, 0, 0, w, h);
+
+ int wm = w - 1;
+ int hm = h - 1;
+ int wh = w * h;
+ int div = radius + radius + 1;
+
+ int r[] = new int[wh];
+ int g[] = new int[wh];
+ int b[] = new int[wh];
+ int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
+ int vmin[] = new int[Math.max(w, h)];
+
+ int divsum = (div + 1) >> 1;
+ divsum *= divsum;
+ int dv[] = new int[256 * divsum];
+ for (i = 0; i < 256 * divsum; i++) {
+ dv[i] = (i / divsum);
+ }
+
+ yw = yi = 0;
+
+ int[][] stack = new int[div][3];
+ int stackpointer;
+ int stackstart;
+ int[] sir;
+ int rbs;
+ int r1 = radius + 1;
+ int routsum, goutsum, boutsum;
+ int rinsum, ginsum, binsum;
+
+ for (y = 0; y < h; y++) {
+ rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
+ for (i = -radius; i <= radius; i++) {
+ p = pix[yi + Math.min(wm, Math.max(i, 0))];
+ sir = stack[i + radius];
+ sir[0] = (p & 0xff0000) >> 16;
+ sir[1] = (p & 0x00ff00) >> 8;
+ sir[2] = (p & 0x0000ff);
+ rbs = r1 - Math.abs(i);
+ rsum += sir[0] * rbs;
+ gsum += sir[1] * rbs;
+ bsum += sir[2] * rbs;
+ if (i > 0) {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ } else {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ }
+ }
+ stackpointer = radius;
+
+ for (x = 0; x < w; x++) {
+
+ r[yi] = dv[rsum];
+ g[yi] = dv[gsum];
+ b[yi] = dv[bsum];
+
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+
+ stackstart = stackpointer - radius + div;
+ sir = stack[stackstart % div];
+
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+
+ if (y == 0) {
+ vmin[x] = Math.min(x + radius + 1, wm);
+ }
+ p = pix[yw + vmin[x]];
+
+ sir[0] = (p & 0xff0000) >> 16;
+ sir[1] = (p & 0x00ff00) >> 8;
+ sir[2] = (p & 0x0000ff);
+
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+
+ stackpointer = (stackpointer + 1) % div;
+ sir = stack[(stackpointer) % div];
+
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+
+ yi++;
+ }
+ yw += w;
+ }
+ for (x = 0; x < w; x++) {
+ rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
+ yp = -radius * w;
+ for (i = -radius; i <= radius; i++) {
+ yi = Math.max(0, yp) + x;
+
+ sir = stack[i + radius];
+
+ sir[0] = r[yi];
+ sir[1] = g[yi];
+ sir[2] = b[yi];
+
+ rbs = r1 - Math.abs(i);
+
+ rsum += r[yi] * rbs;
+ gsum += g[yi] * rbs;
+ bsum += b[yi] * rbs;
+
+ if (i > 0) {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ } else {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ }
+
+ if (i < hm) {
+ yp += w;
+ }
+ }
+ yi = x;
+ stackpointer = radius;
+ for (y = 0; y < h; y++) {
+ // Preserve alpha channel: ( 0xff000000 & pix[yi] )
+ pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];
+
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+
+ stackstart = stackpointer - radius + div;
+ sir = stack[stackstart % div];
+
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+
+ if (x == 0) {
+ vmin[y] = Math.min(y + r1, hm) * w;
+ }
+ p = x + vmin[y];
+
+ sir[0] = r[p];
+ sir[1] = g[p];
+ sir[2] = b[p];
+
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+
+ stackpointer = (stackpointer + 1) % div;
+ sir = stack[stackpointer];
+
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+
+ yi += w;
+ }
+ }
+
+ bitmap.setPixels(pix, 0, w, 0, 0, w, h);
+
+ return (bitmap);
+ }
+}
diff --git a/app/src/main/java/com/yuzhi/fine/ui/blur/ZoomOutPageTransformer.java b/app/src/main/java/com/yuzhi/fine/ui/blur/ZoomOutPageTransformer.java
new file mode 100755
index 0000000..5b7db20
--- /dev/null
+++ b/app/src/main/java/com/yuzhi/fine/ui/blur/ZoomOutPageTransformer.java
@@ -0,0 +1,46 @@
+package com.yuzhi.fine.ui.blur;
+
+import android.support.v4.view.ViewPager;
+import android.view.View;
+
+/**
+ * Created by paveld on 3/7/14.
+ */
+public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
+ private static final float MIN_SCALE = 0.85f;
+ private static final float MIN_ALPHA = 0.5f;
+
+ public void transformPage(View view, float position) {
+ int pageWidth = view.getWidth();
+ int pageHeight = view.getHeight();
+
+ if (position < -1) { // [-Infinity,-1)
+ // This page is way off-screen to the left.
+ view.setAlpha(0);
+
+ } else if (position <= 1) { // [-1,1]
+ // Modify the default slide transition to shrink the page as well
+ float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
+ float vertMargin = pageHeight * (1 - scaleFactor) / 2;
+ float horzMargin = pageWidth * (1 - scaleFactor) / 2;
+ if (position < 0) {
+ view.setTranslationX(horzMargin - vertMargin / 2);
+ } else {
+ view.setTranslationX(-horzMargin + vertMargin / 2);
+ }
+
+ // Scale the page down (between MIN_SCALE and 1)
+ view.setScaleX(scaleFactor);
+ view.setScaleY(scaleFactor);
+
+ // Fade the page relative to its size.
+ view.setAlpha(MIN_ALPHA +
+ (scaleFactor - MIN_SCALE) /
+ (1 - MIN_SCALE) * (1 - MIN_ALPHA));
+
+ } else { // (1,+Infinity]
+ // This page is way off-screen to the right.
+ view.setAlpha(0);
+ }
+ }
+}
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/IPullToRefresh.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/IPullToRefresh.java
index ae219ce..81a078a 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/IPullToRefresh.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/IPullToRefresh.java
@@ -17,6 +17,7 @@
import android.view.View;
import android.view.animation.Interpolator;
+
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.OnPullEventListener;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.OnRefreshListener2;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/LoadingLayoutProxy.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/LoadingLayoutProxy.java
index 8645602..5e57658 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/LoadingLayoutProxy.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/LoadingLayoutProxy.java
@@ -2,6 +2,7 @@
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
+
import com.yuzhi.fine.ui.pulltorefresh.internal.LoadingLayout;
import java.util.HashSet;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/OverscrollHelper.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/OverscrollHelper.java
index d327c9e..69b1e8e 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/OverscrollHelper.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/OverscrollHelper.java
@@ -18,6 +18,7 @@
import android.annotation.TargetApi;
import android.util.Log;
import android.view.View;
+
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.State;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshAdapterViewBase.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshAdapterViewBase.java
index 518fe95..110a589 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshAdapterViewBase.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshAdapterViewBase.java
@@ -23,9 +23,14 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
-import android.widget.*;
+import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
+import android.widget.Adapter;
+import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
+import android.widget.FrameLayout;
+import android.widget.ListAdapter;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.ui.pulltorefresh.internal.EmptyViewMethodAccessor;
import com.yuzhi.fine.ui.pulltorefresh.internal.IndicatorLayout;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshBase.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshBase.java
index feb11d4..7cd9246 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshBase.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshBase.java
@@ -24,13 +24,22 @@
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.Log;
-import android.view.*;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
+
import com.yuzhi.fine.R;
-import com.yuzhi.fine.ui.pulltorefresh.internal.*;
+import com.yuzhi.fine.ui.pulltorefresh.internal.FlipLoadingLayout;
+import com.yuzhi.fine.ui.pulltorefresh.internal.LoadingLayout;
+import com.yuzhi.fine.ui.pulltorefresh.internal.RotateLoadingLayout;
+import com.yuzhi.fine.ui.pulltorefresh.internal.Utils;
+import com.yuzhi.fine.ui.pulltorefresh.internal.ViewCompat;
public abstract class PullToRefreshBase extends LinearLayout implements IPullToRefresh {
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshExpandableListView.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshExpandableListView.java
index 57a1f71..857e86a 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshExpandableListView.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshExpandableListView.java
@@ -22,6 +22,7 @@
import android.util.AttributeSet;
import android.view.View;
import android.widget.ExpandableListView;
+
import com.yuzhi.fine.ui.pulltorefresh.internal.EmptyViewMethodAccessor;
public class PullToRefreshExpandableListView extends PullToRefreshAdapterViewBase {
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshGridView.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshGridView.java
index 3156d93..8ae9004 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshGridView.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshGridView.java
@@ -22,6 +22,7 @@
import android.util.AttributeSet;
import android.view.View;
import android.widget.GridView;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.ui.pulltorefresh.internal.EmptyViewMethodAccessor;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshHorizontalScrollView.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshHorizontalScrollView.java
index 7bccd30..e2d7aaa 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshHorizontalScrollView.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshHorizontalScrollView.java
@@ -22,6 +22,7 @@
import android.util.AttributeSet;
import android.view.View;
import android.widget.HorizontalScrollView;
+
import com.yuzhi.fine.R;
public class PullToRefreshHorizontalScrollView extends PullToRefreshBase {
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshListView.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshListView.java
index 426dd6f..d4b6f68 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshListView.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshListView.java
@@ -25,7 +25,12 @@
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
-import android.widget.*;
+import android.widget.FrameLayout;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.http.HttpClient;
import com.yuzhi.fine.ui.pulltorefresh.internal.EmptyViewMethodAccessor;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshScrollView.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshScrollView.java
index cec95d3..561dc49 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshScrollView.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshScrollView.java
@@ -22,6 +22,7 @@
import android.util.AttributeSet;
import android.view.View;
import android.widget.ScrollView;
+
import com.yuzhi.fine.R;
public class PullToRefreshScrollView extends PullToRefreshBase {
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshWebView.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshWebView.java
index 8d00310..523fd83 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshWebView.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/PullToRefreshWebView.java
@@ -21,9 +21,9 @@
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.util.AttributeSet;
-import android.util.FloatMath;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
+
import com.yuzhi.fine.R;
public class PullToRefreshWebView extends PullToRefreshBase {
@@ -113,7 +113,7 @@ protected boolean isReadyForPullStart() {
@Override
protected boolean isReadyForPullEnd() {
- float exactContentHeight = FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
+ double exactContentHeight = Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
return mRefreshableView.getScrollY() >= (exactContentHeight - mRefreshableView.getHeight());
}
@@ -159,7 +159,7 @@ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY,
}
private int getScrollRange() {
- return (int) Math.max(0, FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())
+ return (int) Math.max(0, Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())
- (getHeight() - getPaddingBottom() - getPaddingTop()));
}
}
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/PullToRefreshWebView2.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/PullToRefreshWebView2.java
index 9d8459f..9a3966c 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/PullToRefreshWebView2.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/PullToRefreshWebView2.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;
+
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshWebView;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/SoundPullEventListener.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/SoundPullEventListener.java
index 7b3ce1b..e787b2d 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/SoundPullEventListener.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/extras/SoundPullEventListener.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.media.MediaPlayer;
import android.view.View;
+
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.State;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/FlipLoadingLayout.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/FlipLoadingLayout.java
index bc3b0a0..808cb84 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/FlipLoadingLayout.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/FlipLoadingLayout.java
@@ -25,6 +25,7 @@
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView.ScaleType;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Orientation;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/IndicatorLayout.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/IndicatorLayout.java
index 44445f8..1bbc51f 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/IndicatorLayout.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/IndicatorLayout.java
@@ -20,11 +20,16 @@
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.view.View;
-import android.view.animation.*;
+import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+import android.view.animation.LinearInterpolator;
+import android.view.animation.RotateAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/LoadingLayout.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/LoadingLayout.java
index 5cc90a1..b4298a8 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/LoadingLayout.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/LoadingLayout.java
@@ -34,6 +34,7 @@
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.ui.pulltorefresh.ILoadingLayout;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/RotateLoadingLayout.java b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/RotateLoadingLayout.java
index 2a6f313..f9b6332 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/RotateLoadingLayout.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/pulltorefresh/internal/RotateLoadingLayout.java
@@ -22,6 +22,7 @@
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView.ScaleType;
+
import com.yuzhi.fine.R;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Mode;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase.Orientation;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/quickadapter/BaseAdapterHelper.java b/app/src/main/java/com/yuzhi/fine/ui/quickadapter/BaseAdapterHelper.java
index 447e7db..f1a0d88 100755
--- a/app/src/main/java/com/yuzhi/fine/ui/quickadapter/BaseAdapterHelper.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/quickadapter/BaseAdapterHelper.java
@@ -27,7 +27,14 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
-import android.widget.*;
+import android.widget.Adapter;
+import android.widget.AdapterView;
+import android.widget.Checkable;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.RatingBar;
+import android.widget.TextView;
+
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import com.yuzhi.fine.R;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/tabstrip/PagerSlidingTabStrip.java b/app/src/main/java/com/yuzhi/fine/ui/tabstrip/PagerSlidingTabStrip.java
index 054eae7..959250a 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/tabstrip/PagerSlidingTabStrip.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/tabstrip/PagerSlidingTabStrip.java
@@ -36,6 +36,7 @@
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
+
import com.yuzhi.fine.R;
import java.util.Locale;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/IconPageIndicator.java b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/IconPageIndicator.java
index 37f04f5..b506a4d 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/IconPageIndicator.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/IconPageIndicator.java
@@ -25,6 +25,7 @@
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
+
import com.yuzhi.fine.R;
import static android.view.ViewGroup.LayoutParams.FILL_PARENT;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/LinePageIndicator.java b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/LinePageIndicator.java
index 64ffb02..865aa06 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/LinePageIndicator.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/LinePageIndicator.java
@@ -27,10 +27,10 @@
import android.support.v4.view.ViewConfigurationCompat;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
-import android.util.FloatMath;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
+
import com.yuzhi.fine.R;
/**
@@ -369,7 +369,7 @@ private int measureWidth(int measureSpec) {
result = Math.min(result, specSize);
}
}
- return (int) FloatMath.ceil(result);
+ return (int) Math.ceil(result);
}
/**
@@ -394,7 +394,7 @@ private int measureHeight(int measureSpec) {
result = Math.min(result, specSize);
}
}
- return (int) FloatMath.ceil(result);
+ return (int) Math.ceil(result);
}
@Override
diff --git a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TabPageIndicator.java b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TabPageIndicator.java
index 2474652..92f11ca 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TabPageIndicator.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TabPageIndicator.java
@@ -26,6 +26,7 @@
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
+
import com.yuzhi.fine.R;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TitlePageIndicator.java b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TitlePageIndicator.java
index 760cca5..5b77512 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TitlePageIndicator.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/TitlePageIndicator.java
@@ -20,7 +20,11 @@
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
-import android.graphics.*;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
@@ -31,6 +35,7 @@
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
+
import com.yuzhi.fine.R;
import java.util.ArrayList;
diff --git a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/UnderlinePageIndicator.java b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/UnderlinePageIndicator.java
index 4309a85..aae80b4 100644
--- a/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/UnderlinePageIndicator.java
+++ b/app/src/main/java/com/yuzhi/fine/ui/viewpagerindicator/UnderlinePageIndicator.java
@@ -30,6 +30,7 @@
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
+
import com.yuzhi.fine.R;
/**
diff --git a/app/src/main/java/com/yuzhi/fine/utils/BitmapUtil.java b/app/src/main/java/com/yuzhi/fine/utils/BitmapUtil.java
new file mode 100644
index 0000000..85b52ab
--- /dev/null
+++ b/app/src/main/java/com/yuzhi/fine/utils/BitmapUtil.java
@@ -0,0 +1,56 @@
+package com.yuzhi.fine.utils;
+
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+/**
+ * Created by tiansj on 15/11/16.
+ */
+public class BitmapUtil {
+
+ private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
+ final int height = options.outHeight;
+ final int width = options.outWidth;
+ int inSampleSize = 1;
+ if (height > reqHeight || width > reqWidth) {
+ final int halfHeight = height / 2;
+ final int halfWidth = width / 2;
+ while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) {
+ inSampleSize *= 2;
+ }
+ }
+ return inSampleSize;
+ }
+
+ // 如果是放大图片,filter决定是否平滑,如果是缩小图片,filter无影响
+ private static Bitmap createScaleBitmap(Bitmap src, int dstWidth, int dstHeight) {
+ Bitmap dst = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, false);
+ if (src != dst) { // 如果没有缩放,那么不回收
+ src.recycle(); // 释放Bitmap的native像素数组
+ }
+ return dst;
+ }
+
+ // 从Resources中加载图片
+ public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {
+ final BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeResource(res, resId, options); // 读取图片长款
+ options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // 计算inSampleSize
+ options.inJustDecodeBounds = false;
+ Bitmap src = BitmapFactory.decodeResource(res, resId, options); // 载入一个稍大的缩略图
+ return createScaleBitmap(src, reqWidth, reqHeight); // 进一步得到目标大小的缩略图
+ }
+
+ // 从sd卡上加载图片
+ public static Bitmap decodeSampledBitmapFromSd(String pathName, int reqWidth, int reqHeight) {
+ final BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeFile(pathName, options);
+ options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
+ options.inJustDecodeBounds = false;
+ Bitmap src = BitmapFactory.decodeFile(pathName, options);
+ return createScaleBitmap(src, reqWidth, reqHeight);
+ }
+}
diff --git a/app/src/main/java/com/yuzhi/fine/utils/StringUtils.java b/app/src/main/java/com/yuzhi/fine/utils/StringUtils.java
index a10bd58..3bcac9b 100644
--- a/app/src/main/java/com/yuzhi/fine/utils/StringUtils.java
+++ b/app/src/main/java/com/yuzhi/fine/utils/StringUtils.java
@@ -1,7 +1,5 @@
package com.yuzhi.fine.utils;
-import android.util.FloatMath;
-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -284,7 +282,7 @@ private static String computingTime(Long date) {
long currentTime = System.currentTimeMillis();
float i = ((currentTime - date) / 3600 / 1000);
if (i < 1) {
- int time = (int) FloatMath.ceil(i * 60);
+ int time = (int) Math.ceil(i * 60);
return time + 1 + "分钟前";
} else if (i < 24) {
return (int) i + "小时前";
diff --git a/app/src/main/res/drawable-xhdpi/ic_bg_unread_count.9.png b/app/src/main/res/drawable-xhdpi/ic_bg_unread_count.9.png
new file mode 100644
index 0000000..bd6a74f
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_bg_unread_count.9.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_calculator.png b/app/src/main/res/drawable-xhdpi/ic_calculator.png
new file mode 100644
index 0000000..8d641e4
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_calculator.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_setting_arrow.png b/app/src/main/res/drawable-xhdpi/ic_setting_arrow.png
new file mode 100644
index 0000000..2fa0405
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_setting_arrow.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_setting_attention.png b/app/src/main/res/drawable-xhdpi/ic_setting_attention.png
new file mode 100644
index 0000000..6e3d7d6
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_setting_attention.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_setting_balance.png b/app/src/main/res/drawable-xhdpi/ic_setting_balance.png
new file mode 100644
index 0000000..ed35f44
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_setting_balance.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_setting_helper.png b/app/src/main/res/drawable-xhdpi/ic_setting_helper.png
new file mode 100644
index 0000000..b741118
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_setting_helper.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_setting_record.png b/app/src/main/res/drawable-xhdpi/ic_setting_record.png
new file mode 100644
index 0000000..015ad86
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_setting_record.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_setting_setting.png b/app/src/main/res/drawable-xhdpi/ic_setting_setting.png
new file mode 100644
index 0000000..a8f347c
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_setting_setting.png differ
diff --git a/app/src/main/res/drawable-xhdpi/newer01.jpg b/app/src/main/res/drawable-xhdpi/newer01.jpg
old mode 100644
new mode 100755
index ae06761..1c5355d
Binary files a/app/src/main/res/drawable-xhdpi/newer01.jpg and b/app/src/main/res/drawable-xhdpi/newer01.jpg differ
diff --git a/app/src/main/res/drawable-xhdpi/newer02.jpg b/app/src/main/res/drawable-xhdpi/newer02.jpg
old mode 100644
new mode 100755
index a87bf44..8433fa1
Binary files a/app/src/main/res/drawable-xhdpi/newer02.jpg and b/app/src/main/res/drawable-xhdpi/newer02.jpg differ
diff --git a/app/src/main/res/drawable-xhdpi/newer03.jpg b/app/src/main/res/drawable-xhdpi/newer03.jpg
old mode 100644
new mode 100755
index c892f4f..03a83d3
Binary files a/app/src/main/res/drawable-xhdpi/newer03.jpg and b/app/src/main/res/drawable-xhdpi/newer03.jpg differ
diff --git a/app/src/main/res/drawable-xhdpi/newer04.jpg b/app/src/main/res/drawable-xhdpi/newer04.jpg
old mode 100644
new mode 100755
index d4e8e39..0ac2f4c
Binary files a/app/src/main/res/drawable-xhdpi/newer04.jpg and b/app/src/main/res/drawable-xhdpi/newer04.jpg differ
diff --git a/app/src/main/res/drawable/list_item_selector.xml b/app/src/main/res/drawable/list_item_selector.xml
new file mode 100644
index 0000000..cef1740
--- /dev/null
+++ b/app/src/main/res/drawable/list_item_selector.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_house_detail.xml b/app/src/main/res/layout/activity_house_detail.xml
index 98a3d54..2c60237 100644
--- a/app/src/main/res/layout/activity_house_detail.xml
+++ b/app/src/main/res/layout/activity_house_detail.xml
@@ -2,11 +2,11 @@
-
+
+ android:background="@color/background_color" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
+ android:textColor="@color/gray" />
-
+
+ android:layout_weight="1.0"
+ android:background="@color/background_color" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
index 2fbdbde..9731e14 100644
--- a/app/src/main/res/layout/activity_splash.xml
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -5,14 +5,6 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_touch_gallery.xml b/app/src/main/res/layout/activity_touch_gallery.xml
index 0f22320..d715ba3 100644
--- a/app/src/main/res/layout/activity_touch_gallery.xml
+++ b/app/src/main/res/layout/activity_touch_gallery.xml
@@ -7,7 +7,7 @@
+ layout="@layout/layout_main_header" />
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home_pager.xml b/app/src/main/res/layout/fragment_home_pager.xml
index dfdea47..5cf0027 100644
--- a/app/src/main/res/layout/fragment_home_pager.xml
+++ b/app/src/main/res/layout/fragment_home_pager.xml
@@ -4,7 +4,7 @@
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- android:background="@color/white">
+ android:background="@null">
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_map_house_item.xml b/app/src/main/res/layout/fragment_map_house_item.xml
index f04a443..e5caefb 100644
--- a/app/src/main/res/layout/fragment_map_house_item.xml
+++ b/app/src/main/res/layout/fragment_map_house_item.xml
@@ -75,7 +75,7 @@
android:layout_height="wrap_content"
android:text="300"
android:textSize="@dimen/text_size_18"
- android:textColor="@color/card_color_orange"
+ android:textColor="@color/orange"
android:id="@+id/price"
android:layout_alignTop="@+id/house_title"
android:layout_toLeftOf="@+id/priceUnit"/>
@@ -84,7 +84,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="万"
- android:textColor="@color/card_color_orange"
+ android:textColor="@color/orange"
android:id="@+id/priceUnit"
android:textSize="@dimen/text_size_12"
android:layout_marginTop="5dp"
diff --git a/app/src/main/res/layout/layout_main_footer.xml b/app/src/main/res/layout/layout_main_footer.xml
new file mode 100644
index 0000000..0788960
--- /dev/null
+++ b/app/src/main/res/layout/layout_main_footer.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/main_header.xml b/app/src/main/res/layout/layout_main_header.xml
similarity index 94%
rename from app/src/main/res/layout/main_header.xml
rename to app/src/main/res/layout/layout_main_header.xml
index 80d2ce2..6fb0ac3 100644
--- a/app/src/main/res/layout/main_header.xml
+++ b/app/src/main/res/layout/layout_main_header.xml
@@ -25,7 +25,7 @@
android:maxWidth="180dp"
android:singleLine="true"
android:text="AndroidFine"
- android:textColor="@color/main_head_title"
+ android:textColor="@color/text_color_white"
android:textSize="@dimen/text_size_20" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/main_footer.xml b/app/src/main/res/layout/main_footer.xml
deleted file mode 100644
index bdf7fc1..0000000
--- a/app/src/main/res/layout/main_footer.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/member_content_view.xml b/app/src/main/res/layout/member_content_view.xml
index 56fd3dc..37c0078 100755
--- a/app/src/main/res/layout/member_content_view.xml
+++ b/app/src/main/res/layout/member_content_view.xml
@@ -2,42 +2,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/member_head_view.xml b/app/src/main/res/layout/member_head_view.xml
index b1c553a..027f4cc 100755
--- a/app/src/main/res/layout/member_head_view.xml
+++ b/app/src/main/res/layout/member_head_view.xml
@@ -8,53 +8,53 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
- android:layout_marginTop="40dp"
- android:src="@drawable/ic_img_user_default"
- android:contentDescription="@string/app_name" />
+ android:layout_marginTop="30dp"
+ android:contentDescription="@string/app_name"
+ android:src="@drawable/ic_img_user_default" />
+ android:textColor="@color/text_color_white"
+ android:textSize="16sp" />
+ android:showDividers="middle">
+ android:padding="13dp"
+ android:text="注册"
+ android:textColor="@color/text_color_white"
+ android:textSize="16sp" />
+ android:padding="13dp"
+ android:text="登录"
+ android:textColor="@color/text_color_white"
+ android:textSize="16sp" />
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index ee5510a..0ed2b15 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,19 +1,51 @@
- #EF3A19
- #EF3A19
- #f5f5f5
+
+
+
+ #fff8f8f8
+ #EF3A19
+ #EF3A19
+ #f5f5f5
#343434
#FF601C
-
- #383838
+
+ #0081E1
+ #323232
+ #ffffff
+ #888888
+ #A8A8A8
+ #FF5B46
+ #ffaaaaaa
+ #ff111111
+
+ #0081E1
+ #0066FF
+
+
+ #48B7FF
+ #FF5B46
+ #F3B720
+ #D9D9D9
+ #A8A8A8
+
+
+ #B5B5B5
+
+
#00000000
+ #66000000
+
+
+
+
#FFFFFF
#000000
+ #FFA500
#808080
#FF0000
#FFD700
@@ -22,47 +54,10 @@
#0000FF
#800080
#FFC0CB
- #FFA500
#FFFACD
#DFDFDF
#F5F5F5
#708090
#0083FF
-
- #ffffffff
- #0e5986
- #ffffff
- #ffffffff
- #959595
- #ffffff
- #efefef
-
- #fa8282
- #ff8048
- #ffd237
- #abbf4f
- #55b3da
- #ae7fc7
-
-
- #203c54
- #38c9ff
-
-
- #49596b
- #ff40ab5e
- #d13939
- #292c35
- #ffffff
- #fece00
- #919aac
- #04d6fc
- #20242b
- #8e9aab
- #d7dbe2
- #e6eaf0
- #ef3f2f
- #d13a38
-
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 85289d2..ecb6b1d 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -42,7 +42,7 @@
- @color/vpi__background_holo_dark
-
-