Browse Source

修改已知问题

316044749 7 years ago
parent
commit
627c334600
49 changed files with 726 additions and 296 deletions
  1. 6 2
      app/build.gradle
  2. 1 2
      app/src/main/AndroidManifest.xml
  3. 139 11
      app/src/main/java/com/ynstkz/shitu/android/activity/ApplyWebActivity.java
  4. 52 26
      app/src/main/java/com/ynstkz/shitu/android/activity/CourseDetailActivity.java
  5. 2 2
      app/src/main/java/com/ynstkz/shitu/android/activity/FindPasswordActivity.java
  6. 10 4
      app/src/main/java/com/ynstkz/shitu/android/activity/HomeActivity.java
  7. 23 18
      app/src/main/java/com/ynstkz/shitu/android/activity/LoginActivity.java
  8. 1 1
      app/src/main/java/com/ynstkz/shitu/android/activity/MineSignUpActivity.java
  9. 62 15
      app/src/main/java/com/ynstkz/shitu/android/activity/OrgDetailActivity.java
  10. 4 1
      app/src/main/java/com/ynstkz/shitu/android/activity/OrgWriteCommentActivity.java
  11. 10 1
      app/src/main/java/com/ynstkz/shitu/android/activity/UserInfoActivity.java
  12. 2 2
      app/src/main/java/com/ynstkz/shitu/android/adapter/HomeBannerAdapter.java
  13. 4 2
      app/src/main/java/com/ynstkz/shitu/android/adapter/MineSignUpAdapter.java
  14. 10 2
      app/src/main/java/com/ynstkz/shitu/android/adapter/OrgCourseListAdapter.java
  15. 1 1
      app/src/main/java/com/ynstkz/shitu/android/adapter/OrgListAdapter.java
  16. 2 2
      app/src/main/java/com/ynstkz/shitu/android/application/STSign.java
  17. 97 42
      app/src/main/java/com/ynstkz/shitu/android/bean/CourseItemBean.java
  18. 9 0
      app/src/main/java/com/ynstkz/shitu/android/bean/LoginBean.java
  19. 9 0
      app/src/main/java/com/ynstkz/shitu/android/bean/OrgDetailBean.java
  20. 2 0
      app/src/main/java/com/ynstkz/shitu/android/common/Constants.java
  21. 14 0
      app/src/main/java/com/ynstkz/shitu/android/data/SharedPreferencesUtils.java
  22. 3 3
      app/src/main/java/com/ynstkz/shitu/android/data/UrlCat.java
  23. 8 0
      app/src/main/java/com/ynstkz/shitu/android/event/OrgCommentSuccessEvent.java
  24. 6 0
      app/src/main/java/com/ynstkz/shitu/android/fragment/HomeFragment.java
  25. 15 0
      app/src/main/java/com/ynstkz/shitu/android/fragment/MineSignUpItemFragment.java
  26. 17 1
      app/src/main/java/com/ynstkz/shitu/android/fragment/OrgListFragment.java
  27. 6 1
      app/src/main/java/com/ynstkz/shitu/android/fragment/UserCenterFragment.java
  28. 12 6
      app/src/main/res/layout/activity_course_detail.xml
  29. 10 8
      app/src/main/res/layout/activity_org_detail.xml
  30. 1 1
      app/src/main/res/layout/activity_register_submint.xml
  31. 141 133
      app/src/main/res/layout/activity_userinfo.xml
  32. 3 3
      app/src/main/res/layout/fm_home.xml
  33. 5 1
      app/src/main/res/layout/item_mine_signup.xml
  34. 3 2
      app/src/main/res/layout/item_org_recommend_list.xml
  35. 1 2
      app/src/main/res/layout/notification_view.xml
  36. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher.png
  37. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  38. BIN
      app/src/main/res/mipmap-hdpi/logo.png
  39. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher.png
  40. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  41. BIN
      app/src/main/res/mipmap-xhdpi/logo.png
  42. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  43. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  44. BIN
      app/src/main/res/mipmap-xxhdpi/logo.png
  45. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  46. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  47. BIN
      app/src/main/res/mipmap-xxxhdpi/logo.png
  48. 0 1
      app/src/main/res/values/arrays.xml
  49. 35 0
      library/src/main/java/com/common/library/utils/PhoneViewUtils.java

+ 6 - 2
app/build.gradle

@@ -1,11 +1,11 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 26
+    compileSdkVersion 27
     defaultConfig {
         applicationId "com.ynstkz.shitu.android"
         minSdkVersion 16
-        targetSdkVersion 26
+        targetSdkVersion 27
         versionCode 2
         versionName "1.0"
         multiDexEnabled true
@@ -66,4 +66,8 @@ dependencies {
     compile 'com.umeng.sdk:utdid:1.1.5.3'
     //PushSDK
     compile 'com.umeng.sdk:push:4.1.0'
+    //图片压缩
+    compile 'top.zibin:Luban:1.1.4'
+    //
+    compile 'com.android.support:exifinterface:27.1.1'
 }

+ 1 - 2
app/src/main/AndroidManifest.xml

@@ -30,7 +30,7 @@
         android:allowBackup="true"
         android:icon="@mipmap/logo"
         android:label="@string/app_name"
-        android:roundIcon="@mipmap/ic_launcher_round"
+        android:roundIcon="@mipmap/logo"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
 
@@ -227,7 +227,6 @@
 
         <activity
             android:name="com.tencent.connect.common.AssistActivity"
-            android:screenOrientation="portrait"
             android:theme="@android:style/Theme.Translucent.NoTitleBar"
             android:configChanges="orientation|keyboardHidden|screenSize"/>
 

+ 139 - 11
app/src/main/java/com/ynstkz/shitu/android/activity/ApplyWebActivity.java

@@ -3,22 +3,28 @@ package com.ynstkz.shitu.android.activity;
 import android.Manifest;
 import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
+import android.database.Cursor;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
+import android.provider.DocumentsContract;
 import android.provider.MediaStore;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
+import android.support.v4.content.FileProvider;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
+import android.webkit.JavascriptInterface;
 import android.webkit.ValueCallback;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
@@ -29,8 +35,10 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.ynstkz.shitu.android.BuildConfig;
 import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.base.TitleBarActivity;
+import com.ynstkz.shitu.android.utils.FileUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -38,6 +46,8 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 
 import butterknife.Bind;
+import top.zibin.luban.Luban;
+import top.zibin.luban.OnCompressListener;
 
 /**
  * 作者:fuchangle on 2018/5/4 10:43
@@ -62,6 +72,8 @@ public class ApplyWebActivity extends TitleBarActivity {
     private ValueCallback<Uri[]> mUMA;
     private final static int FCR = 1;
 
+    private File cameraFile = null;
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -78,8 +90,21 @@ public class ApplyWebActivity extends TitleBarActivity {
             tvTitle.setText(getString(R.string.app_name));
         }
 
-        if (Build.VERSION.SDK_INT >= 23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) {
-            ActivityCompat.requestPermissions(ApplyWebActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);
+//        if (Build.VERSION.SDK_INT >= 23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
+//                || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
+//                || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+//            ActivityCompat.requestPermissions(ApplyWebActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
+//                    Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE }, 1);
+//        }
+
+        if (ActivityCompat.checkSelfPermission(ApplyWebActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+            //权限发生了改变 true  //  false 小米
+            ActivityCompat.requestPermissions(ApplyWebActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
+        }
+
+        if (ActivityCompat.checkSelfPermission(ApplyWebActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+            //权限发生了改变 true  //  false 小米
+            ActivityCompat.requestPermissions(ApplyWebActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1000);
         }
     }
 
@@ -90,6 +115,10 @@ public class ApplyWebActivity extends TitleBarActivity {
 
     private void initData() {
         url = getIntent().getStringExtra("url");
+        if(TextUtils.isEmpty(url)) {
+            return;
+        }
+        Log.e("okhttp", url);
         initWebView();
     }
 
@@ -117,6 +146,7 @@ public class ApplyWebActivity extends TitleBarActivity {
         webSettings.setDomStorageEnabled(true);
         webSettings.setLoadWithOverviewMode(true);
         webSettings.setUseWideViewPort(true);
+        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
 
         if (Build.VERSION.SDK_INT >= 21) {
             webSettings.setMixedContentMode(0);
@@ -126,8 +156,12 @@ public class ApplyWebActivity extends TitleBarActivity {
         } else if (Build.VERSION.SDK_INT < 19) {
             webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
         }
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            webView.setWebContentsDebuggingEnabled(true);
+        }
         webView.setWebViewClient(new Callback());
         webView.loadUrl(url);
+        webView.addJavascriptInterface(new JSCallBack(), "js_callback");
         webView.setWebChromeClient(new WebChromeClient() {
             //For Android 3.0+
             public void openFileChooser(ValueCallback<Uri> uploadMsg) {
@@ -168,16 +202,15 @@ public class ApplyWebActivity extends TitleBarActivity {
                 mUMA = filePathCallback;
                 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                 if (takePictureIntent.resolveActivity(ApplyWebActivity.this.getPackageManager()) != null) {
-                    File photoFile = null;
                     try {
-                        photoFile = createImageFile();
+                        cameraFile = createImageFile();
                         takePictureIntent.putExtra("PhotoPath", mCM);
                     } catch (IOException ex) {
                         Log.e(TAG, "Image file creation failed", ex);
                     }
-                    if (photoFile != null) {
-                        mCM = "file:" + photoFile.getAbsolutePath();
-                        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
+                    if (cameraFile != null) {
+                        mCM = "file:" + cameraFile.getAbsolutePath();
+                        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile));
                     } else {
                         takePictureIntent = null;
                     }
@@ -194,7 +227,7 @@ public class ApplyWebActivity extends TitleBarActivity {
 
                 Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
                 chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
-                chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
+                chooserIntent.putExtra(Intent.EXTRA_TITLE, "选择文件");
                 chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
                 startActivityForResult(chooserIntent, FCR);
                 return true;
@@ -202,6 +235,24 @@ public class ApplyWebActivity extends TitleBarActivity {
         });
     }
 
+    /**
+     * js回调
+     */
+    public class JSCallBack {
+        @JavascriptInterface
+        public void applysuccess(){
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    Intent intent = new Intent(ApplyWebActivity.this, MineSignUpActivity.class);
+                    intent.putExtra("currentIndex", 1);
+                    startActivity(intent);
+                    finish();
+                }
+            });
+        }
+    }
+
     public class Callback extends WebViewClient {
         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
             Toast.makeText(getApplicationContext(), "Failed loading app!", Toast.LENGTH_SHORT).show();
@@ -216,6 +267,40 @@ public class ApplyWebActivity extends TitleBarActivity {
         return File.createTempFile(imageFileName, ".jpg", storageDir);
     }
 
+    /**
+     * 图片压缩
+     * @param file
+     */
+    private void compressImage(File file){
+        if(file == null) {
+            showToast("Please choose an image!");
+        } else {
+            Luban.with(this)
+                    .load(file)
+                    .ignoreBy(1024)
+                    .setTargetDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath())
+                    .setCompressListener(new OnCompressListener() {
+                        @Override
+                        public void onStart() {
+
+                        }
+
+                        @Override
+                        public void onSuccess(File file) {
+                            mCM = "file:" + file.getAbsolutePath();
+                            Uri[] results = new Uri[]{Uri.parse(mCM)};
+                            mUMA.onReceiveValue(results);
+                            mUMA = null;
+                        }
+
+                        @Override
+                        public void onError(Throwable e) {
+
+                        }
+                    }).launch();
+        }
+    }
+
     @Override
     public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) {
         if (event.getAction() == KeyEvent.ACTION_DOWN) {
@@ -223,10 +308,10 @@ public class ApplyWebActivity extends TitleBarActivity {
                 case KeyEvent.KEYCODE_BACK:
                     if (webView.canGoBack()) {
                         webView.goBack();
+                        return true;
                     } else {
                         finish();
                     }
-                    return true;
             }
         }
         return super.onKeyDown(keyCode, event);
@@ -251,12 +336,43 @@ public class ApplyWebActivity extends TitleBarActivity {
                     if (intent == null || intent.getData() == null) {
                         //Capture Photo if no image available
                         if (mCM != null) {
+                            if(cameraFile != null && cameraFile.length() > 1024 * 1024) { //图片大于1M
+                                compressImage(cameraFile);
+                                return;
+                            }
                             results = new Uri[]{Uri.parse(mCM)};
                         }
                     } else {
                         String dataString = intent.getDataString();
                         if (dataString != null) {
-                            results = new Uri[]{Uri.parse(dataString)};
+                            Uri uri= Uri.parse(dataString);
+                            String imagePath = null;
+                            if (DocumentsContract.isDocumentUri(this, uri)) {
+                                String docId = DocumentsContract.getDocumentId(uri);
+                                if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
+                                    //Log.d(TAG, uri.toString());
+                                    String id = docId.split(":")[1];
+                                    String selection = MediaStore.Images.Media._ID + "=" + id;
+                                    imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
+                                } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {
+                                    //Log.d(TAG, uri.toString());
+                                    Uri contentUri = ContentUris.withAppendedId(
+                                            Uri.parse("content://downloads/public_downloads"),
+                                            Long.valueOf(docId));
+                                    imagePath = getImagePath(contentUri, null);
+                                }
+                            } else if ("content".equalsIgnoreCase(uri.getScheme())) {
+                                //Log.d(TAG, "content: " + uri.toString());
+                                imagePath = getImagePath(uri, null);
+                            }
+                            if(!TextUtils.isEmpty(imagePath)) {
+                                File photoImage = new File(imagePath);
+                                if(photoImage.length() > 1024 * 1024) {
+                                    compressImage(photoImage);
+                                    return;
+                                }
+                            }
+                            results = new Uri[]{uri};
                         }
                     }
                 }
@@ -274,4 +390,16 @@ public class ApplyWebActivity extends TitleBarActivity {
     }
 
 
+    private String getImagePath(Uri uri, String selection) {
+        String path = null;
+        Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
+        if (cursor != null) {
+            if (cursor.moveToFirst()) {
+                path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
+            }
+
+            cursor.close();
+        }
+        return path;
+    }
 }

+ 52 - 26
app/src/main/java/com/ynstkz/shitu/android/activity/CourseDetailActivity.java

@@ -2,32 +2,29 @@ package com.ynstkz.shitu.android.activity;
 
 import android.Manifest;
 import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.provider.Settings;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
 import android.support.v4.view.ViewPager;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
+import android.widget.ScrollView;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.common.library.okhttp.OkHttpUtils;
 import com.common.library.okhttp.callback.Callback;
+import com.common.library.pulltorefresh.PullToRefreshBase;
+import com.common.library.pulltorefresh.PullToRefreshScrollView;
+import com.common.library.utils.PixelUtil;
 import com.google.gson.Gson;
 import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.adapter.ViewPagerAdapter;
@@ -51,7 +48,7 @@ import okhttp3.Response;
  * 作者:fuchangle on 2018/2/27 10:45
  */
 
-public class CourseDetailActivity extends TitleBarActivity {
+public class CourseDetailActivity extends TitleBarActivity implements PullToRefreshBase.OnRefreshListener2<ScrollView> {
 
     @Bind(R.id.tv_title)
     TextView tvTitle;
@@ -85,6 +82,10 @@ public class CourseDetailActivity extends TitleBarActivity {
     LinearLayout llPointMain;
     @Bind(R.id.tv_enrollmentArea)
     TextView tvEnrollmentArea;
+    @Bind(R.id.sv_main)
+    PullToRefreshScrollView svMain;
+    @Bind(R.id.rl_banner_main)
+    RelativeLayout rlBannerMain;
 
     private String courseId;
     private CourseDetilBean courseDetilBean;
@@ -109,7 +110,10 @@ public class CourseDetailActivity extends TitleBarActivity {
 
 
     private void initView() {
-
+        svMain.setOnRefreshListener(this);
+        int bannerWidth = PixelUtil.getScreenWidth(this);
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(bannerWidth, bannerWidth / 2);
+        rlBannerMain.setLayoutParams(params);
     }
 
     private void initData() {
@@ -132,10 +136,10 @@ public class CourseDetailActivity extends TitleBarActivity {
                     startActivity(new Intent(CourseDetailActivity.this, LoginActivity.class));
                     return;
                 }
-                if (!STSign.getInstance().isHavePhoneNumber()) {
-                    startActivity(new Intent(CourseDetailActivity.this, CompleteInfoActivity.class));
-                    return;
-                }
+//                if (!STSign.getInstance().isHavePhoneNumber()) {
+//                    startActivity(new Intent(CourseDetailActivity.this, CompleteInfoActivity.class));
+//                    return;
+//                }
 
                 if (ActivityCompat.checkSelfPermission(CourseDetailActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                     //权限发生了改变 true  //  false 小米
@@ -197,6 +201,16 @@ public class CourseDetailActivity extends TitleBarActivity {
         });
     }
 
+    @Override
+    public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
+
+    }
+
+    @Override
+    public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
+        getCourseDetail(courseId);
+    }
+
     /**
      * 课程详情
      *
@@ -213,6 +227,9 @@ public class CourseDetailActivity extends TitleBarActivity {
             @Override
             public void onError(Call call, Exception e, int id) {
                 showToast(getString(R.string.error_msg));
+                if (svMain != null) {
+                    svMain.onRefreshComplete();
+                }
             }
 
             @Override
@@ -226,6 +243,9 @@ public class CourseDetailActivity extends TitleBarActivity {
                         showToast(courseDetilBean.getMsg());
                     }
                 }
+                if (svMain != null) {
+                    svMain.onRefreshComplete();
+                }
             }
         });
     }
@@ -242,23 +262,23 @@ public class CourseDetailActivity extends TitleBarActivity {
         tvViewCount.setText("收藏:" + courseDetilBean.getData().getCollectCount() + "次");
         tvTitle.setText(dataBean.getTitle());
         tvOrgName.setText(dataBean.getTitle());
-        if(!TextUtils.isEmpty(dataBean.getDetail())) {
+        if (!TextUtils.isEmpty(dataBean.getDetail())) {
             tvOrgDesc.setText(dataBean.getDetail());
         }
 
         isCollect = courseDetilBean.getData().isCollect();
 
-        if(!TextUtils.isEmpty(courseDetilBean.getData().getRequirement())) {
+        if (!TextUtils.isEmpty(courseDetilBean.getData().getRequirement())) {
             tvRequirement.setText(courseDetilBean.getData().getRequirement());
         }
 
-        if(!TextUtils.isEmpty(dataBean.getPrice())) {
+        if (!TextUtils.isEmpty(dataBean.getPrice())) {
             tvPrice.setVisibility(View.VISIBLE);
             tvPrice.setText("¥" + dataBean.getPrice() + "元");
         } else {
             tvPrice.setText("¥0元");
         }
-        if(!TextUtils.isEmpty(dataBean.getMarketPrice())) {
+        if (!TextUtils.isEmpty(dataBean.getMarketPrice())) {
             tvCourseMarketprice.setVisibility(View.VISIBLE);
             tvCourseMarketprice.setText("市场价¥" + dataBean.getMarketPrice());
         } else {
@@ -284,6 +304,7 @@ public class CourseDetailActivity extends TitleBarActivity {
             List<View> listShowPic = new ArrayList<>();
             for (int i = 0; i < coursePicList.size(); i++) {
                 ImageView imageView = new ImageView(this);
+                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                 final CourseDetilBean.DataBean.CoursePicListBean coursePicListBean = coursePicList.get(i);
                 String picUrl = coursePicListBean.getPicUrl();
                 if (!TextUtils.isEmpty(picUrl)) {
@@ -300,6 +321,7 @@ public class CourseDetailActivity extends TitleBarActivity {
             vpBanner.setCurrentItem(bannerIndex);
             adapter.notifyDataSetChanged();
             initPointView(dataBean);
+            handler.removeMessages(0);
             handler.sendEmptyMessageDelayed(0, 3000);
         } else {
             ivBannerBg.setVisibility(View.VISIBLE);
@@ -314,8 +336,10 @@ public class CourseDetailActivity extends TitleBarActivity {
         if (dataBean == null || dataBean.getCoursePicList() == null || dataBean.getCoursePicList().size() == 0) {
             return;
         }
+
         int showPicSize = courseDetilBean.getData().getCoursePicList().size();
         if (showPicSize > 0) {
+            llPointMain.removeAllViews();
             listPointView = new ArrayList<>();
             for (int i = 0; i < showPicSize; i++) {
                 ImageView imageView = new ImageView(this);
@@ -367,13 +391,13 @@ public class CourseDetailActivity extends TitleBarActivity {
                 CourseDetilBean.DataBean.EnrollAreaListBean enrollAreaListBean = dataBean.getEnrollAreaList().get(i);
                 String address = enrollAreaListBean.getProvinceName() + enrollAreaListBean.getCityName()
                         + enrollAreaListBean.getDistrictName() + enrollAreaListBean.getAddress();
-                if(TextUtils.isEmpty(address) || "null".equals(address)) {
+                if (TextUtils.isEmpty(address) || "null".equals(address)) {
                     continue;
                 }
-                if(i <= 0) {
+                if (i <= 0) {
                     areaName = areaName + address;
                 } else {
-                    areaName = areaName + "\n"+address;
+                    areaName = areaName + "\n" + address;
                 }
             }
         }
@@ -482,19 +506,21 @@ public class CourseDetailActivity extends TitleBarActivity {
     /**
      * 跳转报名页
      */
-    private void goApplyView(){
-        if(courseDetilBean != null && courseDetilBean.getData() != null) {
-            if(courseDetilBean.getData().isIsNormal()) { //isNormal:是否普通教育机构(true:是,false:否)
+    private void goApplyView() {
+        if (courseDetilBean != null && courseDetilBean.getData() != null) {
+            if (courseDetilBean.getData().isIsNormal()) { //isNormal:是否普通教育机构(true:是,false:否)
                 Intent intent = new Intent(CourseDetailActivity.this, ApplyWebActivity.class);
                 intent.putExtra("title", "报名信息");
                 intent.putExtra("url", UrlCat.URL_APPLY_P43 + "?userId=" +
-                        SharedPreferencesUtils.getUserId() + "&token=" + SharedPreferencesUtils.getToken());
+                        SharedPreferencesUtils.getUserId() + "&token=" + SharedPreferencesUtils.getToken() +
+                        "&courseId=" + courseDetilBean.getData().getCourseId() + "&memberId=" + courseDetilBean.getData().getMemberId());
                 startActivity(intent);
             } else {
                 Intent intent = new Intent(CourseDetailActivity.this, ApplyWebActivity.class);
                 intent.putExtra("title", "报名信息");
                 intent.putExtra("url", UrlCat.URL_APPLY_P47 + "?userId=" +
-                        SharedPreferencesUtils.getUserId() + "&token=" + SharedPreferencesUtils.getToken());
+                        SharedPreferencesUtils.getUserId() + "&token=" + SharedPreferencesUtils.getToken() +
+                        "&courseId=" + courseDetilBean.getData().getCourseId() + "&memberId=" + courseDetilBean.getData().getMemberId());
                 startActivity(intent);
             }
         }
@@ -504,7 +530,7 @@ public class CourseDetailActivity extends TitleBarActivity {
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
         switch (requestCode) {
             case 1000:
-                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                     goApplyView();
                 }
                 break;

+ 2 - 2
app/src/main/java/com/ynstkz/shitu/android/activity/FindPasswordActivity.java

@@ -106,7 +106,7 @@ public class FindPasswordActivity extends TitleBarActivity implements VerifyCode
         btnNext.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                STSign.getInstance().checkVerifycode(1, phoneNumber,
+                STSign.getInstance().checkVerifycode(3, phoneNumber,
                         editVerifyCode.getText().toString().trim(), FindPasswordActivity.this);
             }
         });
@@ -144,7 +144,7 @@ public class FindPasswordActivity extends TitleBarActivity implements VerifyCode
 
     @Override
     public void isVerifyCodeSuccess(int type, String phoneNumber, String code, boolean isSuccess) {
-        if(type == 1 && isSuccess){
+        if(type == 3 && isSuccess){
             Intent intent = new Intent(FindPasswordActivity.this, FindPasswordAffirmActivity.class);
             intent.putExtra("phoneNumber", phoneNumber);
             intent.putExtra("code", code);

+ 10 - 4
app/src/main/java/com/ynstkz/shitu/android/activity/HomeActivity.java

@@ -80,9 +80,6 @@ import okhttp3.Response;
 
 public class HomeActivity extends TitleBarActivity implements AMapLocationListener {
 
-    private static final String FRAGMENT_DIALOG = "dialog";
-    private static final int REQUEST_CAMERA_PERMISSION = 1;
-
     @Bind(R.id.rl_lab_home)
     RelativeLayout rlLabHome;
     @Bind(R.id.rl_lab_nearby)
@@ -192,7 +189,7 @@ public class HomeActivity extends TitleBarActivity implements AMapLocationListen
      *
      * @param tabIndex
      */
-    private void changleLayout(int tabIndex) {
+    public void changleLayout(int tabIndex) {
         this.tabIndex = tabIndex;
         getSupportFragmentManager().beginTransaction().hide(mFragments[0]).hide(mFragments[1])
                 .hide(mFragments[2]).show(mFragments[tabIndex]).commitAllowingStateLoss();
@@ -391,6 +388,8 @@ public class HomeActivity extends TitleBarActivity implements AMapLocationListen
         changleLayout(1);
     }
 
+
+    private long exitTime = 0;
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (mFragments[tabIndex] instanceof OrgListFragment) {
@@ -398,6 +397,13 @@ public class HomeActivity extends TitleBarActivity implements AMapLocationListen
                 return true;
             }
         }
+        if ((System.currentTimeMillis() - exitTime) > 2000) {
+            showToast("再按一次退出程序");
+            exitTime = System.currentTimeMillis();
+            return true;
+        } else {
+            finish();
+        }
         return super.onKeyDown(keyCode, event);
     }
 

+ 23 - 18
app/src/main/java/com/ynstkz/shitu/android/activity/LoginActivity.java

@@ -39,6 +39,7 @@ import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import butterknife.Bind;
 import okhttp3.Call;
@@ -345,7 +346,7 @@ public class LoginActivity extends TitleBarActivity {
      */
     private void thirdRegist(String thirdType, String thirdId, String headPic, String nickName){
 
-        RequestGroup.thirdRegist(thirdType, thirdId, headPic, nickName, new Callback() {
+        RequestGroup.thirdRegist(thirdType, thirdId, headPic, filterNickName(nickName), new Callback() {
             @Override
             public Object parseNetworkResponse(Response response, int id) throws Exception {
                 return new Gson().fromJson(response.body().string(), RegisterBean.class);
@@ -379,6 +380,26 @@ public class LoginActivity extends TitleBarActivity {
     }
 
     /**
+     * 过滤昵称特殊符号
+     * @param nickName
+     */
+    private String filterNickName(String nickName){
+        String regEx  =  "[^(a-zA-Z0-9\\u4e00-\\u9fa5)]";
+        char[] nickNameChars = nickName.toCharArray();
+        StringBuffer result = new StringBuffer();
+        for(char item : nickNameChars) {
+            try {
+                if(!Pattern.matches(regEx, String.valueOf(item))) {
+                    result = result.append(item);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result.toString();
+    }
+
+    /**
      * 登陆成功
      * @param loginBean
      */
@@ -387,6 +408,7 @@ public class LoginActivity extends TitleBarActivity {
         SharedPreferencesUtils.setLogin(true);
         SharedPreferencesUtils.saveToken(loginBean.getData().getToken());
         SharedPreferencesUtils.saveUserId(loginBean.getData().getUserId());
+        SharedPreferencesUtils.setRegistType(loginBean.getData().getLoginType());
 
         showToast(loginBean.getMsg());
         EventBus.getDefault().post(new LoginEvent());
@@ -421,23 +443,6 @@ public class LoginActivity extends TitleBarActivity {
         return true;
     }
 
-//    /**
-//     * 创建第三方昵称
-//     * @param thirdType
-//     * @param nikeName
-//     * @return
-//     */
-//    private String createrThirdNikeName(String thirdType, String nikeName){
-//        if("weixin".equals(thirdType)) {
-//            nikeName = "weixin_" + nikeName + "_" + StringUtils.createRandomNumData(4);
-//        } else if ("qq".equals(thirdType)) {
-//            nikeName = "qq_" + nikeName + "_" + StringUtils.createRandomNumData(4);
-//        } else if ("weibo".equals(thirdType)) {
-//            nikeName = "weibo_" + nikeName + "_" + StringUtils.createRandomNumData(4);
-//        }
-//        return nikeName;
-//    }
-
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(RegisterSuccessEvent event) {
         finish();

+ 1 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/MineSignUpActivity.java

@@ -64,6 +64,7 @@ public class MineSignUpActivity extends TitleBarActivity {
     private void initView(){
         tvTitle.setText("我的报名");
         fragmentList = new ArrayList<>();
+        currentIndex = getIntent().getIntExtra("currentIndex", 0);
 
         MineSignUpItemFragment passFragment = new MineSignUpItemFragment();
         passFragment.setStatus(MineSignUpItemFragment.STATUS_PASS);
@@ -79,7 +80,6 @@ public class MineSignUpActivity extends TitleBarActivity {
 
         MyPagerAdapter adapter = new MyPagerAdapter(fragmentList, getSupportFragmentManager());
         vpContent.setAdapter(adapter);
-        currentIndex = 0;
         changeTab(currentIndex);
         vpContent.setCurrentItem(currentIndex);
     }

+ 62 - 15
app/src/main/java/com/ynstkz/shitu/android/activity/OrgDetailActivity.java

@@ -19,10 +19,15 @@ import android.widget.RelativeLayout;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
+import com.alibaba.idst.nls.internal.common.PhoneInfo;
 import com.bumptech.glide.Glide;
 import com.common.library.okhttp.OkHttpUtils;
 import com.common.library.okhttp.callback.Callback;
+import com.common.library.pulltorefresh.PullToRefreshBase;
+import com.common.library.pulltorefresh.PullToRefreshScrollView;
 import com.common.library.utils.DateUtil;
+import com.common.library.utils.PhotoUtils;
+import com.common.library.utils.PixelUtil;
 import com.google.gson.Gson;
 import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.adapter.OrgCourseListAdapter;
@@ -37,10 +42,15 @@ import com.ynstkz.shitu.android.bean.EvaluateListBean;
 import com.ynstkz.shitu.android.bean.OrgDetailBean;
 import com.ynstkz.shitu.android.data.RequestGroup;
 import com.ynstkz.shitu.android.data.UrlCat;
+import com.ynstkz.shitu.android.event.OrgCommentSuccessEvent;
 import com.ynstkz.shitu.android.exter.GlideRoundTransform;
 import com.ynstkz.shitu.android.helper.UmengShareHelper;
 import com.ynstkz.shitu.android.view.ListViewForScrollView;
 
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -55,7 +65,7 @@ import okhttp3.Response;
  * 作者:fuchangle on 2018/2/24 15:31
  */
 
-public class OrgDetailActivity extends TitleBarActivity {
+public class OrgDetailActivity extends TitleBarActivity implements PullToRefreshBase.OnRefreshListener2<ScrollView> {
 
     @Bind(R.id.tv_title)
     TextView tvTitle;
@@ -98,13 +108,19 @@ public class OrgDetailActivity extends TitleBarActivity {
     @Bind(R.id.ll_recommend_main)
     LinearLayout llRecommendMain;
     @Bind(R.id.sv_main)
-    ScrollView svMain;
+    PullToRefreshScrollView svMain;
     @Bind(R.id.ll_collect)
     LinearLayout llCollect;
     @Bind(R.id.ll_point_main)
     LinearLayout llPointMain;
     @Bind(R.id.iv_banner_bg)
     ImageView ivBannerBg;
+    @Bind(R.id.tv_org_desc_lab)
+    TextView tvOrgDescLab;
+    @Bind(R.id.tv_service_lab)
+    TextView tvServiceLab;
+    @Bind(R.id.rl_banner_main)
+    RelativeLayout rlBannerMain;
 
     private int memberId;
     private boolean isCollect;
@@ -128,7 +144,11 @@ public class OrgDetailActivity extends TitleBarActivity {
     }
 
     private void initView() {
-
+        EventBus.getDefault().register(this);
+        svMain.setOnRefreshListener(this);
+        int bannerWidth = PixelUtil.getScreenWidth(this);
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(bannerWidth, bannerWidth / 2);
+        rlBannerMain.setLayoutParams(params);
     }
 
     private void initData() {
@@ -247,6 +267,16 @@ public class OrgDetailActivity extends TitleBarActivity {
         });
     }
 
+    @Override
+    public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
+        getOrgDetail(memberId, true);
+    }
+
+    @Override
+    public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
+
+    }
+
     /**
      * 获取机构详情
      *
@@ -258,7 +288,7 @@ public class OrgDetailActivity extends TitleBarActivity {
 
     private void getOrgDetail(int memberId, final boolean isScollTop) {
 
-        RequestGroup.getOrgDetail(this,memberId + "", new Callback() {
+        RequestGroup.getOrgDetail(this, memberId + "", new Callback() {
             @Override
             public Object parseNetworkResponse(Response response, int id) throws Exception {
                 return new Gson().fromJson(response.body().string(), OrgDetailBean.class);
@@ -267,6 +297,10 @@ public class OrgDetailActivity extends TitleBarActivity {
             @Override
             public void onError(Call call, Exception e, int id) {
                 showToast(getString(R.string.error_msg));
+                if (isScollTop) {
+                    svMain.scrollBy(0, 0);
+                    svMain.onRefreshComplete();
+                }
             }
 
             @Override
@@ -280,8 +314,9 @@ public class OrgDetailActivity extends TitleBarActivity {
                     }
                 }
                 if (isScollTop) {
-                    svMain.smoothScrollTo(0, 0);
+                    svMain.scrollTo(0, 0);
                 }
+                svMain.onRefreshComplete();
             }
         });
     }
@@ -299,22 +334,30 @@ public class OrgDetailActivity extends TitleBarActivity {
         tvTitle.setText(dataBean.getMemberName());
         tvOrgName.setText(dataBean.getMemberName());
         tvCollectcount.setText("收藏:" + dataBean.getCollectCount() + "次");
-        rbScore.setProgress((int)dataBean.getScore());
+        rbScore.setProgress((int) dataBean.getScore());
         isCollect = dataBean.isCollect();
 
-        if(!TextUtils.isEmpty(dataBean.getPhone())){
+        if (dataBean.isNormal()) {
+            tvOrgDescLab.setText("学校介绍");
+            tvServiceLab.setText("学校特色");
+        } else {
+            tvOrgDescLab.setText("机构介绍");
+            tvServiceLab.setText("机构特色");
+        }
+
+        if (!TextUtils.isEmpty(dataBean.getPhone())) {
             tvOrgPhone.setText(dataBean.getPhone());
         } else {
             tvOrgPhone.setVisibility(View.GONE);
         }
 
-        if(!TextUtils.isEmpty(dataBean.getAddress())) {
+        if (!TextUtils.isEmpty(dataBean.getAddress())) {
             tvAddress.setText(dataBean.getAddress());
         } else {
             tvAddress.setVisibility(View.GONE);
         }
 
-        if(!TextUtils.isEmpty(dataBean.getIntroduction())) {
+        if (!TextUtils.isEmpty(dataBean.getIntroduction())) {
             tvOrgDesc.setText(dataBean.getIntroduction());
         } else {
             tvOrgDesc.setVisibility(View.GONE);
@@ -402,6 +445,7 @@ public class OrgDetailActivity extends TitleBarActivity {
             List<View> listShowPic = new ArrayList<>();
             for (int i = 0; i < dataBean.getShowPicList().size(); i++) {
                 ImageView imageView = new ImageView(this);
+                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                 final BannerItenBean bannerItenBean = dataBean.getShowPicList().get(i);
                 String picUrl = bannerItenBean.getUrl();
                 if (!TextUtils.isEmpty(picUrl)) {
@@ -426,7 +470,8 @@ public class OrgDetailActivity extends TitleBarActivity {
             vpBanner.setCurrentItem(bannerIndex);
             adapter.notifyDataSetChanged();
             initPointView();
-            handler.sendEmptyMessageDelayed(0,3000);
+            handler.removeMessages(0);
+            handler.sendEmptyMessageDelayed(0, 3000);
         } else {
             ivBannerBg.setVisibility(View.VISIBLE);
             vpBanner.setVisibility(View.GONE);
@@ -442,6 +487,7 @@ public class OrgDetailActivity extends TitleBarActivity {
         }
         int showPicSize = dataBean.getShowPicList().size();
         if (showPicSize > 0) {
+            llPointMain.removeAllViews();
             listPointView = new ArrayList<>();
             for (int i = 0; i < showPicSize; i++) {
                 ImageView imageView = new ImageView(this);
@@ -576,14 +622,14 @@ public class OrgDetailActivity extends TitleBarActivity {
     }
 
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onMessageEvent(OrgCommentSuccessEvent event) {
+        getOrgDetail(memberId);
+    }
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         switch (requestCode) {
-            case 10:
-                if (resultCode == RESULT_OK) {
-                    getOrgDetail(memberId);
-                }
-                break;
             case 20:
                 if (resultCode == RESULT_OK) {
                     collectOrg(memberId + "");
@@ -597,5 +643,6 @@ public class OrgDetailActivity extends TitleBarActivity {
         super.onDestroy();
         handler.removeCallbacksAndMessages(null);
         OkHttpUtils.getInstance().cancelTag(this);
+        EventBus.getDefault().unregister(this);
     }
 }

+ 4 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/OrgWriteCommentActivity.java

@@ -37,10 +37,13 @@ import com.ynstkz.shitu.android.application.STSign;
 import com.ynstkz.shitu.android.base.TitleBarActivity;
 import com.ynstkz.shitu.android.bean.OrgCommentSubmintBean;
 import com.ynstkz.shitu.android.data.RequestGroup;
+import com.ynstkz.shitu.android.event.OrgCommentSuccessEvent;
 import com.ynstkz.shitu.android.utils.FileUtils;
 import com.ynstkz.shitu.android.utils.ImageUtils;
 import com.ynstkz.shitu.android.view.SelectPicDialog;
 
+import org.greenrobot.eventbus.EventBus;
+
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -186,7 +189,7 @@ public class OrgWriteCommentActivity extends TitleBarActivity implements View.On
                 OrgCommentSubmintBean orgCommentSubmintBean = (OrgCommentSubmintBean)response;
                 if(orgCommentSubmintBean != null){
                     if("200".equals(orgCommentSubmintBean.getCode())){
-                        setResult(RESULT_OK);
+                        EventBus.getDefault().post(new OrgCommentSuccessEvent());
                         finish();
                     }
                     showToast(orgCommentSubmintBean.getMsg());

+ 10 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/UserInfoActivity.java

@@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
@@ -14,6 +15,7 @@ import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.application.STSign;
 import com.ynstkz.shitu.android.base.TitleBarActivity;
 import com.ynstkz.shitu.android.bean.UserInfoBean;
+import com.ynstkz.shitu.android.data.SharedPreferencesUtils;
 import com.ynstkz.shitu.android.event.UserInfoUpdatedEvent;
 
 import org.greenrobot.eventbus.EventBus;
@@ -57,6 +59,8 @@ public class UserInfoActivity extends TitleBarActivity {
     TextView tvPhoneBind;
     @Bind(R.id.tv_password_setting)
     TextView tvPasswordSetting;
+    @Bind(R.id.ll_show_hidden)
+    LinearLayout llShowHidden;
 
     private boolean isBindPhone;
 
@@ -75,6 +79,11 @@ public class UserInfoActivity extends TitleBarActivity {
 
     private void initView() {
         tvTitle.setText("我的账号");
+        if (SharedPreferencesUtils.getRegistType() == 2) {
+            llShowHidden.setVisibility(View.GONE);
+        } else {
+            llShowHidden.setVisibility(View.VISIBLE);
+        }
         EventBus.getDefault().register(this);
     }
 
@@ -94,7 +103,7 @@ public class UserInfoActivity extends TitleBarActivity {
         rlAccount.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                if(isBindPhone){
+                if (isBindPhone) {
                     startActivity(new Intent(UserInfoActivity.this, AlterPasswordActivity.class));
                 } else {
                     startActivity(new Intent(UserInfoActivity.this, CompleteInfoActivity.class));

+ 2 - 2
app/src/main/java/com/ynstkz/shitu/android/adapter/HomeBannerAdapter.java

@@ -65,9 +65,9 @@ public class HomeBannerAdapter extends PagerAdapter{
         String imageUrl = listDatas.get(position).getUrl();
         if(imageUrl != null){
             if(imageUrl.startsWith("http")) {
-                Glide.with(context).load(imageUrl).into(imageView);
+                Glide.with(context).load(imageUrl).transform(new GlideRoundTransform(context, 10)).into(imageView);
             } else {
-                Glide.with(context).load(UrlCat.HOST + imageUrl).into(imageView);
+                Glide.with(context).load(UrlCat.HOST + imageUrl).transform(new GlideRoundTransform(context, 10)).into(imageView);
             }
         }
         container.addView(imageView);

+ 4 - 2
app/src/main/java/com/ynstkz/shitu/android/adapter/MineSignUpAdapter.java

@@ -11,6 +11,7 @@ import android.widget.TextView;
 import com.bumptech.glide.Glide;
 import com.common.library.adapter.CCAdapterHolder;
 import com.common.library.adapter.CCListAdapter;
+import com.common.library.utils.PhoneViewUtils;
 import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.activity.ApplyInfoPreviewActivity;
 import com.ynstkz.shitu.android.activity.ApplyWebActivity;
@@ -79,13 +80,14 @@ public class MineSignUpAdapter extends CCListAdapter<SignUpRecorsBean>{
                 tvCoursePrice.setText("¥" + content.getPrice());
                 tvCourseMarketprice.setText(content.getMarketPrice() + "");
                 tvCourseMarketprice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
+                PhoneViewUtils.expandViewTouchDelegate(tvPreview, 0, 50, 30, 0);
                 tvPreview.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
                         Intent intent = new Intent(context, ApplyWebActivity.class);
                         intent.putExtra("title", "报名信息预览");
-                        intent.putExtra("url", UrlCat.URL_APPLY_P36 + "?userId=" +
-                                SharedPreferencesUtils.getUserId() + "&token=" + SharedPreferencesUtils.getToken());
+                        intent.putExtra("url", UrlCat.URL_APPLY_P36 + "?token=" + SharedPreferencesUtils.getToken()+
+                                "&applyId=" + content.getApplyId());
                         context.startActivity(intent);
                     }
                 });

+ 10 - 2
app/src/main/java/com/ynstkz/shitu/android/adapter/OrgCourseListAdapter.java

@@ -12,6 +12,7 @@ import com.common.library.adapter.CCAdapterHolder;
 import com.common.library.adapter.CCListAdapter;
 import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.bean.CourseItemBean;
+import com.ynstkz.shitu.android.data.UrlCat;
 import com.ynstkz.shitu.android.exter.GlideRoundTransform;
 
 import java.util.List;
@@ -58,8 +59,15 @@ public class OrgCourseListAdapter extends CCListAdapter<CourseItemBean>{
 
             @Override
             public void updateView(CourseItemBean content, int position) {
-                if(!TextUtils.isEmpty(content.getCoursePic())){
-                    Glide.with(context).load(content.getCoursePic()).asBitmap().transform(new GlideRoundTransform(context)).into(ivIcon);
+                if(content.getCoursePicList() != null && content.getCoursePicList().size() > 0){
+                    String coursePic = content.getCoursePicList().get(0).getPicUrl();
+                    if(!TextUtils.isEmpty(coursePic)) {
+                        if(coursePic.startsWith("http:")) {
+                            Glide.with(context).load(coursePic).asBitmap().transform(new GlideRoundTransform(context)).into(ivIcon);
+                        } else {
+                            Glide.with(context).load(UrlCat.HOST + coursePic).asBitmap().transform(new GlideRoundTransform(context)).into(ivIcon);
+                        }
+                    }
                 } else {
                     ivIcon.setImageResource(R.drawable.org_item_default_icon);
                 }

+ 1 - 1
app/src/main/java/com/ynstkz/shitu/android/adapter/OrgListAdapter.java

@@ -71,7 +71,7 @@ public class OrgListAdapter extends CCListAdapter<OrgItemBean> {
                 tv_memberName.setText(content.getMemberName());
                 rb_score.setProgress((int)content.getScore());
                 tvViewCount.setText("浏览人数:" + content.getViewCount() + "人");
-                if(!TextUtils.isEmpty(content.getLocation())){
+                if(!TextUtils.isEmpty(content.getLogo())){
                     if(content.getLogo().startsWith("http")){
                         Glide.with(context).load(content.getLogo()).asBitmap().transform(new GlideRoundTransform(context)).into(iv_headPic);
                     } else {

+ 2 - 2
app/src/main/java/com/ynstkz/shitu/android/application/STSign.java

@@ -152,7 +152,7 @@ public class STSign {
         TextView tvCancle = view.findViewById(R.id.tv_dialog_cancle);
         TextView tvCall = view.findViewById(R.id.tv_dialog_sure);
 
-        tvPnone.setText("拨打电话" + "40012345678");
+        tvPnone.setText("拨打电话" + Constants.SERVICE_PHONE);
         tvMsg.setText("我们将为您提供更安心的服务");
         tvCancle.setText("我再逛逛");
         tvCall.setText("联系客服");
@@ -167,7 +167,7 @@ public class STSign {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(Intent.ACTION_DIAL);
-                Uri data = Uri.parse("tel:" + "40012345678");
+                Uri data = Uri.parse("tel:" + Constants.SERVICE_PHONE);
                 intent.setData(data);
                 context.startActivity(intent);
                 dialog.dismiss();

+ 97 - 42
app/src/main/java/com/ynstkz/shitu/android/bean/CourseItemBean.java

@@ -2,6 +2,9 @@ package com.ynstkz.shitu.android.bean;
 
 import com.ynstkz.shitu.android.base.BaseBean;
 
+import java.io.Serializable;
+import java.util.List;
+
 /**
  * 作者:fuchangle on 2018/3/6 14:15
  */
@@ -10,32 +13,64 @@ public class CourseItemBean extends BaseBean{
 
 
     /**
-     * courseId : 1
-     * title : 疯狂英语21天
-     * detail : 疯狂英语21天
-     * coursePic : http://pic.com
-     * price : 100
-     * marketPrice : 200
-     * memberId : 3
-     * createTime : null
-     * updateTime : null
-     * isDelete : 0
+     * score : 5
+     * marketPrice : 4000
+     * address : 云南昆明西山区龙阳路
+     * price : 3000
+     * scoreCount : 1
+     * coursePicList : [{"picId":9,"courseId":12,"picUrl":"/upload/course/22/2018-05-31/ynhfyxlbdnlbxou4jlyfyhlgextihzva.jpg"}]
+     * title : 专业舞蹈一对一
+     * courseId : 12
      */
 
-    private String courseId;
+    private int score;
+    private String marketPrice;
+    private String address;
+    private String price;
+    private int scoreCount;
     private String title;
+    private int courseId;
     private String detail;
-    private String coursePic;
-    private String price;
-    private String marketPrice;
-    private String memberId;
+    private List<CoursePicListBean> coursePicList;
 
-    public String getCourseId() {
-        return courseId;
+    public int getScore() {
+        return score;
     }
 
-    public void setCourseId(String courseId) {
-        this.courseId = courseId;
+    public void setScore(int score) {
+        this.score = score;
+    }
+
+    public String getMarketPrice() {
+        return marketPrice;
+    }
+
+    public void setMarketPrice(String marketPrice) {
+        this.marketPrice = marketPrice;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public int getScoreCount() {
+        return scoreCount;
+    }
+
+    public void setScoreCount(int scoreCount) {
+        this.scoreCount = scoreCount;
     }
 
     public String getTitle() {
@@ -46,43 +81,63 @@ public class CourseItemBean extends BaseBean{
         this.title = title;
     }
 
-    public String getDetail() {
-        return detail;
+    public int getCourseId() {
+        return courseId;
     }
 
-    public void setDetail(String detail) {
-        this.detail = detail;
+    public void setCourseId(int courseId) {
+        this.courseId = courseId;
     }
 
-    public String getCoursePic() {
-        return coursePic;
+    public List<CoursePicListBean> getCoursePicList() {
+        return coursePicList;
     }
 
-    public void setCoursePic(String coursePic) {
-        this.coursePic = coursePic;
+    public void setCoursePicList(List<CoursePicListBean> coursePicList) {
+        this.coursePicList = coursePicList;
     }
 
-    public String getPrice() {
-        return price;
+    public String getDetail() {
+        return detail;
     }
 
-    public void setPrice(String price) {
-        this.price = price;
+    public void setDetail(String detail) {
+        this.detail = detail;
     }
 
-    public String getMarketPrice() {
-        return marketPrice;
-    }
+    public static class CoursePicListBean implements Serializable{
+        /**
+         * picId : 9
+         * courseId : 12
+         * picUrl : /upload/course/22/2018-05-31/ynhfyxlbdnlbxou4jlyfyhlgextihzva.jpg
+         */
 
-    public void setMarketPrice(String marketPrice) {
-        this.marketPrice = marketPrice;
-    }
+        private int picId;
+        private int courseId;
+        private String picUrl;
 
-    public String getMemberId() {
-        return memberId;
-    }
+        public int getPicId() {
+            return picId;
+        }
+
+        public void setPicId(int picId) {
+            this.picId = picId;
+        }
+
+        public int getCourseId() {
+            return courseId;
+        }
+
+        public void setCourseId(int courseId) {
+            this.courseId = courseId;
+        }
+
+        public String getPicUrl() {
+            return picUrl;
+        }
 
-    public void setMemberId(String memberId) {
-        this.memberId = memberId;
+        public void setPicUrl(String picUrl) {
+            this.picUrl = picUrl;
+        }
     }
 }

+ 9 - 0
app/src/main/java/com/ynstkz/shitu/android/bean/LoginBean.java

@@ -37,6 +37,7 @@ public class LoginBean extends BaseBean{
         private String userId;
         private String token;
         private boolean isBind = true;
+        private int loginType;
 
         public String getUserName() {
             return userName;
@@ -69,5 +70,13 @@ public class LoginBean extends BaseBean{
         public void setBind(boolean bind) {
             isBind = bind;
         }
+
+        public int getLoginType() {
+            return loginType;
+        }
+
+        public void setLoginType(int loginType) {
+            this.loginType = loginType;
+        }
     }
 }

+ 9 - 0
app/src/main/java/com/ynstkz/shitu/android/bean/OrgDetailBean.java

@@ -38,6 +38,7 @@ public class OrgDetailBean extends BaseBean{
         private boolean isCollect;
         private String service;
         private List<OrgItemBean> recentList;
+        private boolean isNormal;
 
         public String getAddress() {
             return address;
@@ -166,5 +167,13 @@ public class OrgDetailBean extends BaseBean{
         public void setRecentList(List<OrgItemBean> recentList) {
             this.recentList = recentList;
         }
+
+        public boolean isNormal() {
+            return isNormal;
+        }
+
+        public void setNormal(boolean normal) {
+            isNormal = normal;
+        }
     }
 }

+ 2 - 0
app/src/main/java/com/ynstkz/shitu/android/common/Constants.java

@@ -16,6 +16,8 @@ public class Constants {
 
     public static final String KEY_AMAP_LOCATION = "45fb5d8b52ba4f9f214bfb4fdaf81a72";
 
+    public static final String SERVICE_PHONE = "0871-63525120";
+
     //昆明火车站经纬度
     public static final String KM_CITY = "昆明";
     public static final int KM_CITY_ID = 367;

+ 14 - 0
app/src/main/java/com/ynstkz/shitu/android/data/SharedPreferencesUtils.java

@@ -24,6 +24,8 @@ public class SharedPreferencesUtils {
 
     public static final String KEY_MSG_LASTTIME = "key_msg_lasttime";
 
+    public static final String KEY_REGISTER_TYPE = "key_register_type";
+
     /**
      * 是否登录
      * @return
@@ -105,4 +107,16 @@ public class SharedPreferencesUtils {
     public static long getMsgLastTime(){
         return (Long)SharedPreferencesDao.get(KEY_MSG_LASTTIME, (long)0);
     }
+
+    /**
+     * 获取账号注册类型
+     * @param type
+     */
+    public static void setRegistType(int type){
+        SharedPreferencesDao.set(KEY_REGISTER_TYPE, type);
+    }
+
+    public static int getRegistType(){
+        return (int)SharedPreferencesDao.get(KEY_REGISTER_TYPE, 0);
+    }
 }

+ 3 - 3
app/src/main/java/com/ynstkz/shitu/android/data/UrlCat.java

@@ -181,17 +181,17 @@ public class UrlCat {
     /**
      * 普通教育机构报名
      */
-    public static final String URL_APPLY_P43 = HOST + "h5/p43.html";
+    public static final String URL_APPLY_P43 = HOST + "static/mobile/apply-normal.html";
 
     /**
      * 非普通教育机构报名
      */
-    public static final String URL_APPLY_P47 = HOST + "h5/p47.html";
+    public static final String URL_APPLY_P47 = HOST + "static/mobile/apply-abnormal.html";
 
     /**
      * 报名信息预览
      */
-    public static final String URL_APPLY_P36 = HOST + "h5/p36.html";
+    public static final String URL_APPLY_P36 = HOST + "static/mobile/apply-preview.html";
 
     /**
      * 保存学生信息

+ 8 - 0
app/src/main/java/com/ynstkz/shitu/android/event/OrgCommentSuccessEvent.java

@@ -0,0 +1,8 @@
+package com.ynstkz.shitu.android.event;
+
+/**
+ * 作者:fuchangle on 2018/5/24 10:46
+ */
+
+public class OrgCommentSuccessEvent {
+}

+ 6 - 0
app/src/main/java/com/ynstkz/shitu/android/fragment/HomeFragment.java

@@ -59,6 +59,7 @@ import com.ynstkz.shitu.android.data.SharedPreferencesUtils;
 import com.ynstkz.shitu.android.data.UrlCat;
 import com.ynstkz.shitu.android.event.LocationChangedEvent;
 import com.ynstkz.shitu.android.event.MoreOrgDataEvent;
+import com.ynstkz.shitu.android.event.OrgCommentSuccessEvent;
 import com.ynstkz.shitu.android.event.OrgTypeFilterEvent;
 import com.ynstkz.shitu.android.event.SearchEvent;
 import com.ynstkz.shitu.android.exter.GlideRoundTransform;
@@ -644,6 +645,11 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
 
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onMessageEvent(OrgCommentSuccessEvent event) {
+        getOrgRecommendList();
+    }
+
     @Override
     public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
         pageNumber = 1;

+ 15 - 0
app/src/main/java/com/ynstkz/shitu/android/fragment/MineSignUpItemFragment.java

@@ -1,10 +1,12 @@
 package com.ynstkz.shitu.android.fragment;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
@@ -15,6 +17,7 @@ import com.common.library.pulltorefresh.PullToRefreshBase;
 import com.common.library.pulltorefresh.PullToRefreshListView;
 import com.google.gson.Gson;
 import com.ynstkz.shitu.android.R;
+import com.ynstkz.shitu.android.activity.CourseDetailActivity;
 import com.ynstkz.shitu.android.adapter.MineSignUpAdapter;
 import com.ynstkz.shitu.android.application.STSign;
 import com.ynstkz.shitu.android.base.BaseFragment;
@@ -76,6 +79,18 @@ public class MineSignUpItemFragment extends BaseFragment implements PullToRefres
 
     private void setListener() {
 
+        pullToRefresh.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                SignUpRecorsBean signUpRecorsBean = (SignUpRecorsBean)adapterView.getAdapter().getItem(i);
+                if(signUpRecorsBean != null) {
+                    int courseId = signUpRecorsBean.getCourseId();
+                    Intent intent = new Intent(getActivity(), CourseDetailActivity.class);
+                    intent.putExtra("courseId", courseId+"");
+                    startActivity(intent);
+                }
+            }
+        });
     }
 
     @Override

+ 17 - 1
app/src/main/java/com/ynstkz/shitu/android/fragment/OrgListFragment.java

@@ -41,6 +41,7 @@ import com.common.library.pulltorefresh.PullToRefreshListView;
 import com.common.library.utils.PhoneViewUtils;
 import com.google.gson.Gson;
 import com.ynstkz.shitu.android.R;
+import com.ynstkz.shitu.android.activity.HomeActivity;
 import com.ynstkz.shitu.android.activity.LocationSelectActivity;
 import com.ynstkz.shitu.android.activity.OrgDetailActivity;
 import com.ynstkz.shitu.android.adapter.OrgFilterListAdapter;
@@ -142,6 +143,8 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
     //声明mLocationOption对象
     public AMapLocationClientOption mLocationOption = null;
 
+    private boolean isFromHomeTypeFilter;
+
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fm_nearby, null);
@@ -674,6 +677,7 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
         pageNumber = 1;
         getOrgList();
         closeFilterContent();
+        isFromHomeTypeFilter = true;
     }
 
     /**
@@ -685,6 +689,7 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
         }
     }
 
+    private long exitTime = 0;
     // 返回键按下时会被调用
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == event.KEYCODE_BACK
@@ -693,6 +698,18 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
                 llFilterContent.setVisibility(View.GONE);
                 return true;
             }
+            if(isFromHomeTypeFilter) {
+                ((HomeActivity)getActivity()).changleLayout(0);
+                isFromHomeTypeFilter = false;
+                return true;
+            }
+            if ((System.currentTimeMillis() - exitTime) > 2000) {
+                showToast("再按一次退出程序");
+                exitTime = System.currentTimeMillis();
+                return true;
+            } else {
+                getActivity().finish();
+            }
         }
         return false;
     }
@@ -704,5 +721,4 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
         EventBus.getDefault().unregister(this);
         OkHttpUtils.getInstance().cancelTag(this);
     }
-
 }

+ 6 - 1
app/src/main/java/com/ynstkz/shitu/android/fragment/UserCenterFragment.java

@@ -99,7 +99,6 @@ public class UserCenterFragment extends BaseFragment {
 
         if (isLogin()) {
             getUserInfo();
-            getMsgLastTime();
         }
     }
 
@@ -270,6 +269,12 @@ public class UserCenterFragment extends BaseFragment {
         });
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        getMsgLastTime();
+    }
+
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(LoginEvent event) {
         getUserInfo();

+ 12 - 6
app/src/main/res/layout/activity_course_detail.xml

@@ -3,7 +3,9 @@
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/default_bg">
+    android:background="@color/default_bg"
+    android:focusable="true"
+    android:focusableInTouchMode="true">
 
     <RelativeLayout
         android:id="@+id/view_title"
@@ -61,10 +63,12 @@
 
     </RelativeLayout>
 
-    <ScrollView
+    <com.common.library.pulltorefresh.PullToRefreshScrollView
+        android:id="@+id/sv_main"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@+id/view_title">
+        android:layout_height="match_parent"
+        android:layout_below="@+id/view_title"
+        android:layout_above="@+id/ll_price_bottom">
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -72,8 +76,9 @@
             android:orientation="vertical">
 
             <RelativeLayout
+                android:id="@+id/rl_banner_main"
                 android:layout_width="match_parent"
-                android:layout_height="180dp"
+                android:layout_height="wrap_content"
                 android:background="#EEEEEE">
 
                 <ImageView
@@ -225,9 +230,10 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </com.common.library.pulltorefresh.PullToRefreshScrollView>
 
     <LinearLayout
+        android:id="@+id/ll_price_bottom"
         android:layout_width="match_parent"
         android:layout_height="@dimen/company_45dp"
         android:layout_alignParentBottom="true"

+ 10 - 8
app/src/main/res/layout/activity_org_detail.xml

@@ -4,7 +4,9 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/default_bg"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    android:focusable="true"
+    android:focusableInTouchMode="true">
 
     <RelativeLayout
         android:id="@+id/view_title"
@@ -61,10 +63,10 @@
 
     </RelativeLayout>
 
-    <ScrollView
+    <com.common.library.pulltorefresh.PullToRefreshScrollView
         android:id="@+id/sv_main"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="match_parent">
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -72,8 +74,9 @@
             android:orientation="vertical">
 
             <RelativeLayout
+                android:id="@+id/rl_banner_main"
                 android:layout_width="match_parent"
-                android:layout_height="180dp"
+                android:layout_height="wrap_content"
                 android:background="#EEEEEE">
 
                 <ImageView
@@ -165,9 +168,9 @@
                 android:padding="@dimen/default_content_margin">
 
                 <TextView
+                    android:id="@+id/tv_org_desc_lab"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="机构介绍"
                     android:textColor="@color/color_333"
                     android:textSize="@dimen/company_16sp" />
 
@@ -192,9 +195,9 @@
                 android:padding="@dimen/default_content_margin">
 
                 <TextView
+                    android:id="@+id/tv_service_lab"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="特色服务"
                     android:textColor="@color/color_333"
                     android:textSize="@dimen/company_16sp" />
 
@@ -218,7 +221,6 @@
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="课程"
                     android:textColor="@color/color_333"
                     android:textSize="@dimen/company_16sp" />
 
@@ -318,6 +320,6 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </com.common.library.pulltorefresh.PullToRefreshScrollView>
 
 </LinearLayout>

+ 1 - 1
app/src/main/res/layout/activity_register_submint.xml

@@ -122,7 +122,7 @@
             android:layout_height="wrap_content"
             android:textSize="@dimen/company_14sp"
             android:textColor="@color/main_color"
-            android:text="《仕途网用户协议》"/>
+            android:text="《灌灌在线用户协议》"/>
 
     </LinearLayout>
 

+ 141 - 133
app/src/main/res/layout/activity_userinfo.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:orientation="vertical">
 
-    <include layout="@layout/view_title"/>
+    <include layout="@layout/view_title" />
 
     <RelativeLayout
         android:id="@+id/rl_username"
@@ -15,153 +15,161 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:padding="@dimen/default_content_margin"
-            android:textSize="@dimen/company_16sp"
+            android:text="用户名"
             android:textColor="@color/color_333"
-            android:text="用户名"/>
+            android:textSize="@dimen/company_16sp" />
 
         <TextView
             android:id="@+id/tv_username"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerVertical="true"
-            android:layout_toLeftOf="@+id/iv_username_go"
             android:layout_marginRight="@dimen/company_10dp"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="@color/color_666"/>
+            android:layout_toLeftOf="@+id/iv_username_go"
+            android:textColor="@color/color_666"
+            android:textSize="@dimen/company_16sp" />
 
         <ImageView
             android:id="@+id/iv_username_go"
             android:layout_width="@dimen/company_20dp"
             android:layout_height="@dimen/company_20dp"
-            android:layout_centerVertical="true"
             android:layout_alignParentRight="true"
-            android:src="@drawable/go_icon"/>
-
-    </RelativeLayout>
-
-    <include layout="@layout/view_default_line"/>
-
-    <RelativeLayout
-        android:id="@+id/rl_account"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="@dimen/default_content_margin"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="@color/color_333"
-            android:text="账号密码"/>
-
-        <TextView
-            android:id="@+id/tv_password_setting"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
             android:layout_centerVertical="true"
-            android:layout_marginRight="@dimen/company_10dp"
-            android:layout_toLeftOf="@+id/iv_password_more"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="#ff0000"
-            android:text="未设置"
-            android:visibility="gone"/>
-
-        <ImageView
-            android:id="@+id/iv_password_more"
-            android:layout_width="@dimen/company_20dp"
-            android:layout_height="@dimen/company_20dp"
-            android:layout_centerVertical="true"
-            android:layout_alignParentRight="true"
-            android:src="@drawable/go_icon"/>
+            android:src="@drawable/go_icon" />
 
     </RelativeLayout>
 
-    <include layout="@layout/view_default_line"/>
+    <include layout="@layout/view_default_line" />
 
-    <RelativeLayout
-        android:id="@+id/rl_three_account"
+    <LinearLayout
+        android:id="@+id/ll_show_hidden"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="@dimen/default_content_margin"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="@color/color_333"
-            android:text="绑定第三方账号"/>
-
-        <ImageView
-            android:layout_width="@dimen/company_20dp"
-            android:layout_height="@dimen/company_20dp"
-            android:layout_centerVertical="true"
-            android:layout_alignParentRight="true"
-            android:src="@drawable/go_icon"/>
-
-    </RelativeLayout>
-
-    <include layout="@layout/view_default_line"/>
-
-    <RelativeLayout
-        android:id="@+id/rl_id_auth"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="@dimen/default_content_margin"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="@color/color_333"
-            android:text="身份认证"/>
-
-
-        <ImageView
-            android:layout_width="@dimen/company_20dp"
-            android:layout_height="@dimen/company_20dp"
-            android:layout_centerVertical="true"
-            android:layout_alignParentRight="true"
-            android:src="@drawable/go_icon"/>
-
-    </RelativeLayout>
-
-    <include layout="@layout/view_default_line"/>
-
-    <RelativeLayout
-        android:id="@+id/rl_phone_number"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <TextView
-            android:id="@+id/tv_phone_bind"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="@dimen/default_content_margin"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="@color/color_333"
-            android:text="手机号"/>
-
-        <TextView
-            android:id="@+id/tv_phone_number"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            android:layout_toLeftOf="@+id/iv_phone_numbe"
-            android:layout_marginRight="@dimen/company_10dp"
-            android:textSize="@dimen/company_16sp"
-            android:textColor="@color/color_666"/>
-
-        <ImageView
-            android:id="@+id/iv_phone_numbe"
-            android:layout_width="@dimen/company_20dp"
-            android:layout_height="@dimen/company_20dp"
-            android:layout_centerVertical="true"
-            android:layout_alignParentRight="true"
-            android:src="@drawable/go_icon"/>
-
-    </RelativeLayout>
-
-    <include layout="@layout/view_default_line"/>
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <RelativeLayout
+            android:id="@+id/rl_account"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:padding="@dimen/default_content_margin"
+                android:text="账号密码"
+                android:textColor="@color/color_333"
+                android:textSize="@dimen/company_16sp" />
+
+            <TextView
+                android:id="@+id/tv_password_setting"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="@dimen/company_10dp"
+                android:layout_toLeftOf="@+id/iv_password_more"
+                android:text="未设置"
+                android:textColor="#ff0000"
+                android:textSize="@dimen/company_16sp"
+                android:visibility="gone" />
+
+            <ImageView
+                android:id="@+id/iv_password_more"
+                android:layout_width="@dimen/company_20dp"
+                android:layout_height="@dimen/company_20dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:src="@drawable/go_icon" />
+
+        </RelativeLayout>
+
+        <include layout="@layout/view_default_line" />
+
+        <RelativeLayout
+            android:id="@+id/rl_three_account"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:padding="@dimen/default_content_margin"
+                android:text="绑定第三方账号"
+                android:textColor="@color/color_333"
+                android:textSize="@dimen/company_16sp" />
+
+            <ImageView
+                android:layout_width="@dimen/company_20dp"
+                android:layout_height="@dimen/company_20dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:src="@drawable/go_icon" />
+
+        </RelativeLayout>
+
+        <include layout="@layout/view_default_line" />
+
+        <RelativeLayout
+            android:id="@+id/rl_id_auth"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:padding="@dimen/default_content_margin"
+                android:text="身份认证"
+                android:textColor="@color/color_333"
+                android:textSize="@dimen/company_16sp" />
+
+
+            <ImageView
+                android:layout_width="@dimen/company_20dp"
+                android:layout_height="@dimen/company_20dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:src="@drawable/go_icon" />
+
+        </RelativeLayout>
+
+        <include layout="@layout/view_default_line" />
+
+        <RelativeLayout
+            android:id="@+id/rl_phone_number"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <TextView
+                android:id="@+id/tv_phone_bind"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:padding="@dimen/default_content_margin"
+                android:text="手机号"
+                android:textColor="@color/color_333"
+                android:textSize="@dimen/company_16sp" />
+
+            <TextView
+                android:id="@+id/tv_phone_number"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="@dimen/company_10dp"
+                android:layout_toLeftOf="@+id/iv_phone_numbe"
+                android:textColor="@color/color_666"
+                android:textSize="@dimen/company_16sp" />
+
+            <ImageView
+                android:id="@+id/iv_phone_numbe"
+                android:layout_width="@dimen/company_20dp"
+                android:layout_height="@dimen/company_20dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:src="@drawable/go_icon" />
+
+        </RelativeLayout>
+
+        <include layout="@layout/view_default_line" />
+
+    </LinearLayout>
 
     <RelativeLayout
         android:id="@+id/rl_logout"
@@ -172,12 +180,12 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:padding="@dimen/default_content_margin"
-            android:textSize="@dimen/company_16sp"
+            android:text="退出账号"
             android:textColor="@color/color_333"
-            android:text="退出账号"/>
+            android:textSize="@dimen/company_16sp" />
 
     </RelativeLayout>
 
-    <include layout="@layout/view_default_line"/>
+    <include layout="@layout/view_default_line" />
 
 </LinearLayout>

+ 3 - 3
app/src/main/res/layout/fm_home.xml

@@ -32,8 +32,8 @@
 
                <android.support.v4.view.ViewPager
                    android:id="@+id/viewpager"
-                   android:layout_width="280dp"
-                   android:layout_height="180dp"
+                   android:layout_width="320dp"
+                   android:layout_height="160dp"
                    android:layout_centerInParent="true"
                    android:clipChildren="false"/>
 
@@ -43,7 +43,7 @@
                    android:layout_height="@dimen/company_20dp"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentBottom="true"
-                   android:layout_marginBottom="@dimen/company_5dp"
+                   android:layout_marginBottom="@dimen/company_8dp"
                    android:layout_marginRight="@dimen/company_70dp"
                    android:orientation="horizontal"/>
 

+ 5 - 1
app/src/main/res/layout/item_mine_signup.xml

@@ -18,7 +18,7 @@
 
         <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="@dimen/company_80dp"
+            android:layout_height="wrap_content"
             android:layout_marginLeft="@dimen/company_10dp"
             android:orientation="vertical">
 
@@ -34,6 +34,7 @@
                     android:ellipsize="end"
                     android:layout_alignParentLeft="true"
                     android:layout_toLeftOf="@+id/tv_preview"
+                    android:layout_centerVertical="true"
                     android:textSize="@dimen/company_16sp"
                     android:textColor="@color/color_333"
                     android:textStyle="bold"
@@ -44,6 +45,9 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignParentRight="true"
+                    android:paddingLeft="@dimen/company_10dp"
+                    android:paddingRight="@dimen/company_10dp"
+                    android:paddingBottom="@dimen/company_5dp"
                     android:textSize="@dimen/company_16sp"
                     android:textColor="@color/main_color"
                     android:text="报名信息预览"/>

+ 3 - 2
app/src/main/res/layout/item_org_recommend_list.xml

@@ -27,10 +27,11 @@
                 android:id="@+id/tv_memberName"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:maxLines="1"
+                android:ellipsize="end"
                 android:textSize="@dimen/company_16sp"
                 android:textColor="@color/color_333"
-                android:textStyle="bold"
-                android:text="新东方培训学校-西湖文化广场分校"/>
+                android:textStyle="bold"/>
 
             <LinearLayout
                 android:layout_width="match_parent"

+ 1 - 2
app/src/main/res/layout/notification_view.xml

@@ -7,8 +7,7 @@
         android:id="@+id/notification_large_icon"
         android:layout_width="64dp"
         android:layout_height="64dp"
-        android:scaleType="fitXY"
-        android:src="@mipmap/ic_launcher"/>
+        android:scaleType="fitXY"/>
 
     <TextView
         android:id="@+id/notification_title"

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-hdpi/logo.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-xhdpi/logo.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-xxhdpi/logo.png


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


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


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


+ 0 - 1
app/src/main/res/values/arrays.xml

@@ -5,7 +5,6 @@
         <item>我的收藏</item>
         <item>我的评价</item>
         <item>我的报名</item>
-        <item>学生信息</item>
 
     </string-array>
 

+ 35 - 0
library/src/main/java/com/common/library/utils/PhoneViewUtils.java

@@ -2,6 +2,8 @@ package com.common.library.utils;
 
 import android.app.Activity;
 import android.content.Context;
+import android.graphics.Rect;
+import android.view.TouchDelegate;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 
@@ -32,4 +34,37 @@ public class PhoneViewUtils {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 扩大View的触摸和点击响应范围,最大不超过其父View范围
+     *
+     * @param view
+     * @param top
+     * @param bottom
+     * @param left
+     * @param right
+     */
+    public static void expandViewTouchDelegate(final View view, final int top,
+                                               final int bottom, final int left, final int right) {
+
+        ((View) view.getParent()).post(new Runnable() {
+            @Override
+            public void run() {
+                Rect bounds = new Rect();
+                view.setEnabled(true);
+                view.getHitRect(bounds);
+
+                bounds.top -= top;
+                bounds.bottom += bottom;
+                bounds.left -= left;
+                bounds.right += right;
+
+                TouchDelegate touchDelegate = new TouchDelegate(bounds, view);
+
+                if (View.class.isInstance(view.getParent())) {
+                    ((View) view.getParent()).setTouchDelegate(touchDelegate);
+                }
+            }
+        });
+    }
 }