Преглед на файлове

对接修改头像接口

316044749 преди 7 години
родител
ревизия
2dd8fad07f
променени са 18 файла, в които са добавени 909 реда и са изтрити 87 реда
  1. 4 0
      app/src/main/AndroidManifest.xml
  2. 291 0
      app/src/main/java/com/ynstkz/shitu/android/activity/AlterHeadpicActivity.java
  3. 2 3
      app/src/main/java/com/ynstkz/shitu/android/activity/LoginActivity.java
  4. 45 5
      app/src/main/java/com/ynstkz/shitu/android/activity/OrgCommentListActivity.java
  5. 94 32
      app/src/main/java/com/ynstkz/shitu/android/activity/OrgWriteCommentActivity.java
  6. 3 1
      app/src/main/java/com/ynstkz/shitu/android/adapter/HomeBannerAdapter.java
  7. 54 0
      app/src/main/java/com/ynstkz/shitu/android/adapter/OrgCommentListAdapter.java
  8. 99 29
      app/src/main/java/com/ynstkz/shitu/android/bean/EvaluateListBean.java
  9. 32 12
      app/src/main/java/com/ynstkz/shitu/android/bean/HomeBannerBean.java
  10. 69 0
      app/src/main/java/com/ynstkz/shitu/android/bean/OrgCommentListBean.java
  11. 8 2
      app/src/main/java/com/ynstkz/shitu/android/data/RequestGroup.java
  12. 1 1
      app/src/main/java/com/ynstkz/shitu/android/data/UrlCat.java
  13. 1 2
      app/src/main/java/com/ynstkz/shitu/android/fragment/HomeFragment.java
  14. 11 0
      app/src/main/java/com/ynstkz/shitu/android/fragment/UserCenterFragment.java
  15. 17 0
      app/src/main/java/com/ynstkz/shitu/android/utils/FileUtils.java
  16. 119 0
      app/src/main/java/com/ynstkz/shitu/android/utils/ImageUtils.java
  17. 35 0
      app/src/main/res/layout/activity_alter_headpic.xml
  18. 24 0
      app/src/main/res/layout/item_org_comment_list.xml

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

@@ -145,6 +145,10 @@
         <activity android:name=".activity.OrgCommentListActivity"
             android:screenOrientation="portrait"/>
 
+        <!--更改头像-->
+        <activity android:name=".activity.AlterHeadpicActivity"
+            android:screenOrientation="portrait"/>
+
         <!--定位服务-->
         <meta-data android:name="com.amap.api.v2.apikey" android:value="45fb5d8b52ba4f9f214bfb4fdaf81a72"/>
         <service android:name="com.amap.api.location.APSService"/>

+ 291 - 0
app/src/main/java/com/ynstkz/shitu/android/activity/AlterHeadpicActivity.java

@@ -0,0 +1,291 @@
+package com.ynstkz.shitu.android.activity;
+
+import android.app.ProgressDialog;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.common.library.okhttp.callback.Callback;
+import com.google.gson.Gson;
+import com.ynstkz.shitu.android.R;
+import com.ynstkz.shitu.android.base.BaseBean;
+import com.ynstkz.shitu.android.base.TitleBarActivity;
+import com.ynstkz.shitu.android.data.RequestGroup;
+import com.ynstkz.shitu.android.utils.FileUtils;
+import com.ynstkz.shitu.android.utils.ImageUtils;
+import com.ynstkz.shitu.android.view.SelectPicDialog;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import butterknife.Bind;
+import okhttp3.Call;
+import okhttp3.Response;
+
+/**
+ * 作者:fuchangle on 2018/3/18 20:18
+ */
+
+public class AlterHeadpicActivity extends TitleBarActivity implements View.OnClickListener {
+
+    /**
+     * 请求相册
+     */
+    public static final int REQUEST_CODE_GETIMAGE_BYSDCARD = 0;
+    /**
+     * 请求相机
+     */
+    public static final int REQUEST_CODE_GETIMAGE_BYCAMERA = 1;
+    /**
+     * 请求裁剪
+     */
+    public static final int REQUEST_CODE_GETIMAGE_BYCROP = 2;
+
+    @Bind(R.id.iv_headPic)
+    ImageView ivHeadPic;
+    @Bind(R.id.tv_title)
+    TextView tvTitle;
+
+    private SelectPicDialog selectPicDialog;
+    private ProgressDialog progressDialog;
+
+    private String protraitPath;
+    private File protraitFile;
+    private Uri origUri;
+    private Uri cropUri;
+    private final static int CROP = 200;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        initView();
+        initData();
+        setListener();
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.activity_alter_headpic;
+    }
+
+
+    private void initView() {
+        tvTitle.setText("个人头像");
+    }
+
+
+    private void initData() {
+
+    }
+
+    private void setListener() {
+
+        ivHeadPic.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (selectPicDialog == null) {
+                    selectPicDialog = new SelectPicDialog(AlterHeadpicActivity.this, AlterHeadpicActivity.this);
+                }
+                selectPicDialog.show();
+            }
+        });
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.take_photo_layout:
+                closePopDialog();
+                startActionCamera();
+                break;
+            case R.id.choose_from_gallery_layout:
+                closePopDialog();
+                startImagePick();
+                break;
+        }
+    }
+
+    private void closePopDialog() {
+        if (selectPicDialog != null && selectPicDialog.isShowing()) {
+            selectPicDialog.dismiss();
+        }
+    }
+
+    /**
+     * 相机拍照
+     */
+    private void startActionCamera() {
+        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, getCameraTempFile());
+        startActivityForResult(intent, REQUEST_CODE_GETIMAGE_BYCAMERA);
+    }
+
+    /**
+     * 拍照保存的绝对路径
+     */
+    private Uri getCameraTempFile() {
+        String storageState = Environment.getExternalStorageState();
+        if (storageState.equals(Environment.MEDIA_MOUNTED)) {
+            File savedir = new File(getFileSavePath());
+            if (!savedir.exists()) {
+                savedir.mkdirs();
+            }
+        } else {
+            showToast("无法保存上传的头像,请检查SD卡是否挂载");
+            return null;
+        }
+        String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss")
+                .format(new Date());
+        // 照片命名
+        String cropFileName = "st_camera_" + timeStamp + ".jpg";
+        // 裁剪头像的绝对路径
+        protraitPath = getFileSavePath() + cropFileName;
+        protraitFile = new File(protraitPath);
+        cropUri = Uri.fromFile(protraitFile);
+        this.origUri = this.cropUri;
+        return this.cropUri;
+    }
+
+    /**
+     * 获取文件保存路径
+     *
+     * @return
+     */
+    private String getFileSavePath() {
+        return Environment
+                .getExternalStorageDirectory().getAbsolutePath()
+                + "/shitu/Portrait/";
+    }
+
+    /**
+     * 拍照后裁剪
+     *
+     * @param data 原始图片
+     *             裁剪后图片
+     */
+    private void startActionCrop(Uri data) {
+        Intent intent = new Intent("com.android.camera.action.CROP");
+        intent.setDataAndType(data, "image/*");
+        intent.putExtra("output", this.getUploadTempFile(data));
+        intent.putExtra("crop", "true");
+        intent.putExtra("aspectX", 1);// 裁剪框比例
+        intent.putExtra("aspectY", 1);
+        intent.putExtra("outputX", CROP);// 输出图片大小
+        intent.putExtra("outputY", CROP);
+        intent.putExtra("scale", true);// 去黑边
+        intent.putExtra("scaleUpIfNeeded", true);// 去黑边
+        startActivityForResult(intent,
+                REQUEST_CODE_GETIMAGE_BYSDCARD);
+    }
+
+    // 裁剪头像的绝对路径
+    private Uri getUploadTempFile(Uri uri) {
+        String storageState = Environment.getExternalStorageState();
+        if (storageState.equals(Environment.MEDIA_MOUNTED)) {
+            File savedir = new File(getFileSavePath());
+            if (!savedir.exists()) {
+                savedir.mkdirs();
+            }
+        } else {
+            showToast("无法保存上传的头像,请检查SD卡是否挂载");
+            return null;
+        }
+        String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss")
+                .format(new Date());
+        String thePath = ImageUtils.getAbsolutePathFromNoStandardUri(uri);
+
+        // 如果是标准Uri
+        if (TextUtils.isEmpty(thePath)) {
+            thePath = ImageUtils.getAbsoluteImagePath(this, uri);
+        }
+        String ext = FileUtils.getFileFormat(thePath);
+        ext = TextUtils.isEmpty(ext) ? "jpg" : ext;
+        // 照片命名
+        String cropFileName = "st_crop_" + timeStamp + "." + ext;
+        // 裁剪头像的绝对路径
+        protraitPath = getFileSavePath() + cropFileName;
+        protraitFile = new File(protraitPath);
+
+        cropUri = Uri.fromFile(protraitFile);
+        return this.cropUri;
+    }
+
+    /**
+     * 选择图片裁剪
+     */
+    private void startImagePick() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("image/*");
+        startActivityForResult(Intent.createChooser(intent, "选择图片"), REQUEST_CODE_GETIMAGE_BYCROP);
+    }
+
+
+    /**
+     * 上传头像
+     */
+    private void userResetHeadpic() {
+
+        if (!TextUtils.isEmpty(protraitPath) && protraitFile.exists()) {
+
+        } else {
+            showToast("图像不存在,上传失败");
+            return;
+        }
+
+        progressDialog = new ProgressDialog(AlterHeadpicActivity.this);
+        progressDialog.setMessage("正在提交...");
+        progressDialog.show();
+
+        RequestGroup.userResetHeadpic(protraitFile, new Callback() {
+            @Override
+            public Object parseNetworkResponse(Response response, int id) throws Exception {
+                return new Gson().fromJson(response.body().string(), BaseBean.class);
+            }
+
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                progressDialog.dismiss();
+                showToast(getString(R.string.error_msg));
+            }
+
+            @Override
+            public void onResponse(Object response, int id) {
+                progressDialog.dismiss();
+                BaseBean baseBean = (BaseBean) response;
+                if (baseBean != null) {
+                    showToast(baseBean.getMsg());
+                    if ("200".equals(baseBean.getCode())) {
+                        Glide.with(AlterHeadpicActivity.this).load(protraitFile).into(ivHeadPic);
+                    }
+                }
+            }
+        });
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        switch (requestCode) {
+            case REQUEST_CODE_GETIMAGE_BYCAMERA:
+                startActionCrop(origUri);// 拍照后裁剪
+            case REQUEST_CODE_GETIMAGE_BYCROP:
+                if (data != null) {
+                    startActionCrop(data.getData());// 选图后裁剪
+                }
+                break;
+            case REQUEST_CODE_GETIMAGE_BYSDCARD:
+                userResetHeadpic();// 上传新照片
+                break;
+        }
+    }
+}

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

@@ -189,12 +189,11 @@ public class LoginActivity extends TitleBarActivity {
                         if (loginBean.getData() != null) {
 
                             SharedPreferencesUtils.setLogin(true);
-                            EventBus.getDefault().post(new LoginEvent());
-                            showToast(loginBean.getMsg());
-
                             SharedPreferencesUtils.saveToken(loginBean.getData().getToken());
                             SharedPreferencesUtils.saveUserId(loginBean.getData().getUserId());
 
+                            showToast(loginBean.getMsg());
+                            EventBus.getDefault().post(new LoginEvent());
                             finish();
                         }
                     } else {

+ 45 - 5
app/src/main/java/com/ynstkz/shitu/android/activity/OrgCommentListActivity.java

@@ -2,15 +2,23 @@ package com.ynstkz.shitu.android.activity;
 
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.widget.ListView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.common.library.okhttp.callback.Callback;
+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.base.TitleBarActivity;
+import com.ynstkz.shitu.android.bean.EvaluateListBean;
+import com.ynstkz.shitu.android.bean.OrgCommentListBean;
 import com.ynstkz.shitu.android.data.RequestGroup;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import butterknife.Bind;
 import okhttp3.Call;
 import okhttp3.Response;
@@ -19,7 +27,7 @@ import okhttp3.Response;
  * 作者:fuchangle on 2018/3/15 17:40
  */
 
-public class OrgCommentListActivity extends TitleBarActivity {
+public class OrgCommentListActivity extends TitleBarActivity implements PullToRefreshBase.OnRefreshListener2<ListView>{
 
     @Bind(R.id.tv_title)
     TextView tvTitle;
@@ -30,6 +38,7 @@ public class OrgCommentListActivity extends TitleBarActivity {
 
     private String memberId;
     private int pageNumber;
+    private List<EvaluateListBean> evaluateList;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -45,7 +54,8 @@ public class OrgCommentListActivity extends TitleBarActivity {
     }
 
     private void initView(){
-        tvTitle.setText(getIntent().getStringExtra("memberTitle"));
+        tvTitle.setText(getIntent().getStringExtra("收到的评论"));
+        pullToRefresh.setOnRefreshListener(this);
     }
 
     private void initData(){
@@ -54,6 +64,18 @@ public class OrgCommentListActivity extends TitleBarActivity {
         getOrgCommentList();
     }
 
+    @Override
+    public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+        pageNumber ++;
+        getOrgCommentList();
+    }
+
+    @Override
+    public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+        pageNumber = 1;
+        getOrgCommentList();
+    }
+
     private void setListener(){
 
     }
@@ -63,17 +85,35 @@ public class OrgCommentListActivity extends TitleBarActivity {
         RequestGroup.getOrgCommentList(pageNumber+"", memberId, new Callback() {
             @Override
             public Object parseNetworkResponse(Response response, int id) throws Exception {
-                return null;
+                return new Gson().fromJson(response.body().string(), OrgCommentListBean.class);
             }
 
             @Override
             public void onError(Call call, Exception e, int id) {
-
+                showToast(getString(R.string.error_msg));
             }
 
             @Override
             public void onResponse(Object response, int id) {
-
+                OrgCommentListBean orgCommentListBean = (OrgCommentListBean)response;
+                if(orgCommentListBean != null){
+                    if("200".equals(orgCommentListBean.getCode())){
+                        if(orgCommentListBean.getData() != null){
+                            if(orgCommentListBean.getData().getEvaluateList() != null
+                                    && orgCommentListBean.getData().getEvaluateList().size() > 0){
+                                if(pageNumber == 1){
+                                    if(evaluateList == null){
+                                        evaluateList = new ArrayList<>();
+                                    }
+                                    evaluateList.addAll(orgCommentListBean.getData().getEvaluateList());
+
+                                }
+                            }
+                        }
+                    } else {
+                        showToast(orgCommentListBean.getMsg());
+                    }
+                }
             }
         });
     }

+ 94 - 32
app/src/main/java/com/ynstkz/shitu/android/activity/OrgWriteCommentActivity.java

@@ -5,8 +5,10 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.provider.MediaStore;
 import android.support.annotation.Nullable;
+import android.text.TextUtils;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.Button;
@@ -27,7 +29,9 @@ import com.ynstkz.shitu.android.utils.ImageUtils;
 import com.ynstkz.shitu.android.view.SelectPicDialog;
 
 import java.io.File;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -71,6 +75,12 @@ public class OrgWriteCommentActivity extends TitleBarActivity implements View.On
     private OrgCommentPicAdapter orgCommentPicAdapter;
     private ProgressDialog progressDialog;
 
+    private String protraitPath;
+    private File protraitFile;
+    private Uri origUri;
+    private Uri cropUri;
+    private final static int CROP = 200;
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -191,17 +201,45 @@ public class OrgWriteCommentActivity extends TitleBarActivity implements View.On
      */
     private void startActionCamera() {
         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, getCameraTempFile());
         startActivityForResult(intent, REQUEST_CODE_GETIMAGE_BYCAMERA);
     }
 
     /**
-     * 选择图片裁剪
+     * 拍照保存的绝对路径
      */
-    private void startImagePick() {
-        Intent intent = new Intent(Intent.ACTION_PICK);
-        intent.setType("image/*");
-        startActivityForResult(Intent.createChooser(intent, "选择图片"),
-                REQUEST_CODE_GETIMAGE_BYCAMERA);
+    private Uri getCameraTempFile() {
+        String storageState = Environment.getExternalStorageState();
+        if (storageState.equals(Environment.MEDIA_MOUNTED)) {
+            File savedir = new File(getFileSavePath());
+            if (!savedir.exists()) {
+                savedir.mkdirs();
+            }
+        } else {
+            showToast("无法保存上传的头像,请检查SD卡是否挂载");
+            return null;
+        }
+        String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss")
+                .format(new Date());
+        // 照片命名
+        String cropFileName = "st_camera_" + timeStamp + ".jpg";
+        // 裁剪头像的绝对路径
+        protraitPath = getFileSavePath() + cropFileName;
+        protraitFile = new File(protraitPath);
+        cropUri = Uri.fromFile(protraitFile);
+        this.origUri = this.cropUri;
+        return this.cropUri;
+    }
+
+    /**
+     * 获取文件保存路径
+     *
+     * @return
+     */
+    private String getFileSavePath() {
+        return Environment
+                .getExternalStorageDirectory().getAbsolutePath()
+                + "/shitu/Portrait/";
     }
 
     /**
@@ -213,18 +251,60 @@ public class OrgWriteCommentActivity extends TitleBarActivity implements View.On
     private void startActionCrop(Uri data) {
         Intent intent = new Intent("com.android.camera.action.CROP");
         intent.setDataAndType(data, "image/*");
+        intent.putExtra("output", this.getUploadTempFile(data));
         intent.putExtra("crop", "true");
         intent.putExtra("aspectX", 1);// 裁剪框比例
         intent.putExtra("aspectY", 1);
-        intent.putExtra("outputX", 200);// 输出图片大小
-        intent.putExtra("outputY", 200);
+        intent.putExtra("outputX", CROP);// 输出图片大小
+        intent.putExtra("outputY", CROP);
         intent.putExtra("scale", true);// 去黑边
         intent.putExtra("scaleUpIfNeeded", true);// 去黑边
-        intent.putExtra("return-data", true);
         startActivityForResult(intent,
                 REQUEST_CODE_GETIMAGE_BYSDCARD);
     }
 
+    // 裁剪头像的绝对路径
+    private Uri getUploadTempFile(Uri uri) {
+        String storageState = Environment.getExternalStorageState();
+        if (storageState.equals(Environment.MEDIA_MOUNTED)) {
+            File savedir = new File(getFileSavePath());
+            if (!savedir.exists()) {
+                savedir.mkdirs();
+            }
+        } else {
+            showToast("无法保存上传的头像,请检查SD卡是否挂载");
+            return null;
+        }
+        String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss")
+                .format(new Date());
+        String thePath = ImageUtils.getAbsolutePathFromNoStandardUri(uri);
+
+        // 如果是标准Uri
+        if (TextUtils.isEmpty(thePath)) {
+            thePath = ImageUtils.getAbsoluteImagePath(this, uri);
+        }
+        String ext = FileUtils.getFileFormat(thePath);
+        ext = TextUtils.isEmpty(ext) ? "jpg" : ext;
+        // 照片命名
+        String cropFileName = "st_crop_" + timeStamp + "." + ext;
+        // 裁剪头像的绝对路径
+        protraitPath = getFileSavePath() + cropFileName;
+        protraitFile = new File(protraitPath);
+
+        cropUri = Uri.fromFile(protraitFile);
+        return this.cropUri;
+    }
+
+    /**
+     * 选择图片裁剪
+     */
+    private void startImagePick() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+        intent.setType("image/*");
+        startActivityForResult(Intent.createChooser(intent, "选择图片"), REQUEST_CODE_GETIMAGE_BYCROP);
+    }
+
     /**
      * 添加图片
      * @param file
@@ -241,34 +321,16 @@ public class OrgWriteCommentActivity extends TitleBarActivity implements View.On
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode){
+        switch (requestCode) {
             case REQUEST_CODE_GETIMAGE_BYCAMERA:
+                startActionCrop(origUri);// 拍照后裁剪
+            case REQUEST_CODE_GETIMAGE_BYCROP:
                 if (data != null) {
-                    if (data.getData() != null) {
-                        startActionCrop(data.getData());
-                    } else {
-                        Bitmap bitMap = data.getParcelableExtra("data");
-                        if (bitMap != null) {
-                            startActionCrop(Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitMap, null, null)));
-                        }
-                    }
+                    startActionCrop(data.getData());// 选图后裁剪
                 }
                 break;
             case REQUEST_CODE_GETIMAGE_BYSDCARD:
-                if (data != null) {
-                    if (data.getData() != null) {
-                        File takeFile = FileUtils.from(this, data.getData());
-                        if (takeFile != null) {
-                            addTakeImage(takeFile);
-                        }
-                    } else {
-                        Bitmap bitMap = data.getParcelableExtra("data");
-                        File takeFile = ImageUtils.saveBitmapToPic(bitMap, "win_pic" + System.currentTimeMillis());
-                        if (takeFile != null) {
-                            addTakeImage(takeFile);
-                        }
-                    }
-                }
+                addTakeImage(protraitFile);// 上传新照片
                 break;
         }
     }

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

@@ -14,6 +14,8 @@ import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.activity.CourseDetailActivity;
 import com.ynstkz.shitu.android.activity.OrgDetailActivity;
 import com.ynstkz.shitu.android.bean.HomeBannerBean;
+import com.ynstkz.shitu.android.common.Constants;
+import com.ynstkz.shitu.android.data.UrlCat;
 import com.ynstkz.shitu.android.exter.GlideRoundTransform;
 
 import java.util.List;
@@ -57,7 +59,7 @@ public class HomeBannerAdapter extends PagerAdapter{
     @Override
     public Object instantiateItem(ViewGroup container, int position) {
         ImageView imageView = (ImageView) LayoutInflater.from(context).inflate(R.layout.item_home_banner_img,null);
-        Glide.with(context).load(listDatas.get(position).getUrl()).into(imageView);
+        Glide.with(context).load(UrlCat.HOST + listDatas.get(position).getUrl()).into(imageView);
         container.addView(imageView);
         imageView.setOnClickListener(new View.OnClickListener() {
             @Override

+ 54 - 0
app/src/main/java/com/ynstkz/shitu/android/adapter/OrgCommentListAdapter.java

@@ -0,0 +1,54 @@
+package com.ynstkz.shitu.android.adapter;
+
+import android.content.Context;
+import android.view.View;
+
+import com.common.library.adapter.CCAdapterHolder;
+import com.common.library.adapter.CCListAdapter;
+import com.ynstkz.shitu.android.R;
+import com.ynstkz.shitu.android.bean.EvaluateListBean;
+
+import java.util.List;
+
+/**
+ * 作者:fuchangle on 2018/3/17 22:50
+ */
+
+public class OrgCommentListAdapter extends CCListAdapter<EvaluateListBean>{
+
+    private Context context;
+    private List<EvaluateListBean> adapterContent;
+
+    /**
+     * Construct list adapter.
+     *
+     * @param context        Context.
+     * @param adapterContent Content to display.
+     */
+    public OrgCommentListAdapter(Context context, List<EvaluateListBean> adapterContent) {
+        super(context, adapterContent);
+        this.context = context;
+        this.adapterContent = adapterContent;
+    }
+
+    @Override
+    public CCAdapterHolder<EvaluateListBean> createHolder(int type) {
+        return new CCAdapterHolder<EvaluateListBean>() {
+
+            @Override
+            public int getResource() {
+                return R.layout.item_org_comment_list;
+            }
+
+            @Override
+            public void initializeView(View convertView) {
+
+            }
+
+            @Override
+            public void updateView(EvaluateListBean content, int position) {
+
+            }
+        };
+    }
+}

+ 99 - 29
app/src/main/java/com/ynstkz/shitu/android/bean/EvaluateListBean.java

@@ -2,26 +2,60 @@ 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 16:04
  */
 
 public class EvaluateListBean extends BaseBean{
 
-    private int evaluateId;
+
+    /**
+     * score : 5
+     * evaluatePicList : [{"evaluatePicId":3,"evaluateId":3,"picUrl":"/upload/evaluate/8/2018-03-16/txnqm3pjtx9rmxiuaerydm2lm4oyh9yk.jpg"},{"evaluatePicId":4,"evaluateId":3,"picUrl":"/upload/evaluate/8/2018-03-16/3mccmipqme5e1qojv7t5xzhmygjdheh6.jpg"}]
+     * createTime : 1521188739000
+     * memberName : 奥腾专业英语培训机构
+     * userId : 8
+     * headPic : null
+     * content : 很不错的
+     * evaluateId : 3
+     * memberId : 3
+     */
+
+    private int score;
+    private long createTime;
+    private String memberName;
     private int userId;
+    private String headPic;
+    private String content;
+    private int evaluateId;
     private int memberId;
-    private int score;
-    private Object content;
-    private Object createTime;
-    private Object updateTime;
+    private List<EvaluatePicListBean> evaluatePicList;
 
-    public int getEvaluateId() {
-        return evaluateId;
+    public int getScore() {
+        return score;
     }
 
-    public void setEvaluateId(int evaluateId) {
-        this.evaluateId = evaluateId;
+    public void setScore(int score) {
+        this.score = score;
+    }
+
+    public long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(long createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getMemberName() {
+        return memberName;
+    }
+
+    public void setMemberName(String memberName) {
+        this.memberName = memberName;
     }
 
     public int getUserId() {
@@ -32,43 +66,79 @@ public class EvaluateListBean extends BaseBean{
         this.userId = userId;
     }
 
-    public int getMemberId() {
-        return memberId;
+    public String getHeadPic() {
+        return headPic;
     }
 
-    public void setMemberId(int memberId) {
-        this.memberId = memberId;
+    public void setHeadPic(String headPic) {
+        this.headPic = headPic;
     }
 
-    public int getScore() {
-        return score;
+    public String getContent() {
+        return content;
     }
 
-    public void setScore(int score) {
-        this.score = score;
+    public void setContent(String content) {
+        this.content = content;
     }
 
-    public Object getContent() {
-        return content;
+    public int getEvaluateId() {
+        return evaluateId;
     }
 
-    public void setContent(Object content) {
-        this.content = content;
+    public void setEvaluateId(int evaluateId) {
+        this.evaluateId = evaluateId;
     }
 
-    public Object getCreateTime() {
-        return createTime;
+    public int getMemberId() {
+        return memberId;
     }
 
-    public void setCreateTime(Object createTime) {
-        this.createTime = createTime;
+    public void setMemberId(int memberId) {
+        this.memberId = memberId;
+    }
+
+    public List<EvaluatePicListBean> getEvaluatePicList() {
+        return evaluatePicList;
     }
 
-    public Object getUpdateTime() {
-        return updateTime;
+    public void setEvaluatePicList(List<EvaluatePicListBean> evaluatePicList) {
+        this.evaluatePicList = evaluatePicList;
     }
 
-    public void setUpdateTime(Object updateTime) {
-        this.updateTime = updateTime;
+    public static class EvaluatePicListBean implements Serializable{
+        /**
+         * evaluatePicId : 3
+         * evaluateId : 3
+         * picUrl : /upload/evaluate/8/2018-03-16/txnqm3pjtx9rmxiuaerydm2lm4oyh9yk.jpg
+         */
+
+        private int evaluatePicId;
+        private int evaluateId;
+        private String picUrl;
+
+        public int getEvaluatePicId() {
+            return evaluatePicId;
+        }
+
+        public void setEvaluatePicId(int evaluatePicId) {
+            this.evaluatePicId = evaluatePicId;
+        }
+
+        public int getEvaluateId() {
+            return evaluateId;
+        }
+
+        public void setEvaluateId(int evaluateId) {
+            this.evaluateId = evaluateId;
+        }
+
+        public String getPicUrl() {
+            return picUrl;
+        }
+
+        public void setPicUrl(String picUrl) {
+            this.picUrl = picUrl;
+        }
     }
 }

+ 32 - 12
app/src/main/java/com/ynstkz/shitu/android/bean/HomeBannerBean.java

@@ -1,6 +1,5 @@
 package com.ynstkz.shitu.android.bean;
 
-import com.google.gson.annotations.SerializedName;
 import com.ynstkz.shitu.android.base.BaseBean;
 
 import java.io.Serializable;
@@ -24,17 +23,14 @@ public class HomeBannerBean extends BaseBean{
     }
 
     public static class DataBean implements Serializable{
-        /**
-         * bannerId : 1
-         * url : http://img.taopic.com/uploads/allimg/140118/234951-14011Q32Z561.jpg
-         * title : 手机大卖
-         * desc : 手机广告
-         */
 
         private int bannerId;
         private String url;
         private String title;
-        private String desc;
+        private String appJump;
+        private int picSort;
+        private String pcJump;
+        private long createTime;
 
         public int getBannerId() {
             return bannerId;
@@ -60,12 +56,36 @@ public class HomeBannerBean extends BaseBean{
             this.title = title;
         }
 
-        public String getDesc() {
-            return desc;
+        public String getAppJump() {
+            return appJump;
         }
 
-        public void setDesc(String desc) {
-            this.desc = desc;
+        public void setAppJump(String appJump) {
+            this.appJump = appJump;
+        }
+
+        public int getPicSort() {
+            return picSort;
+        }
+
+        public void setPicSort(int picSort) {
+            this.picSort = picSort;
+        }
+
+        public String getPcJump() {
+            return pcJump;
+        }
+
+        public void setPcJump(String pcJump) {
+            this.pcJump = pcJump;
+        }
+
+        public long getCreateTime() {
+            return createTime;
+        }
+
+        public void setCreateTime(long createTime) {
+            this.createTime = createTime;
         }
     }
 }

Файловите разлики са ограничени, защото са твърде много
+ 69 - 0
app/src/main/java/com/ynstkz/shitu/android/bean/OrgCommentListBean.java


+ 8 - 2
app/src/main/java/com/ynstkz/shitu/android/data/RequestGroup.java

@@ -6,6 +6,8 @@ import com.common.library.cache.Cache;
 import com.common.library.okhttp.OkHttpUtils;
 import com.common.library.okhttp.callback.Callback;
 import com.google.gson.Gson;
+import com.ynstkz.shitu.android.application.STSign;
+import com.ynstkz.shitu.android.bean.UserInfoBean;
 
 import java.io.File;
 import java.net.URL;
@@ -27,6 +29,9 @@ public class RequestGroup {
      */
     public static Map<String, String> getSystemParams() {
         Map<String, String> params = new HashMap<>();
+        if(SharedPreferencesUtils.isLogin()){
+            params.put("userId", SharedPreferencesUtils.getUserId());
+        }
         return params;
     }
 
@@ -167,9 +172,10 @@ public class RequestGroup {
      * @param headPic
      * @param callback
      */
-    public static void userResetHeadpic(String headPic, Callback callback){
+    public static void userResetHeadpic(File headPic, Callback callback){
         Map<String, String> params = getSystemParams();
-        OkHttpUtils.postString().url(UrlCat.URL_USER_HEADPIC).content(new Gson().toJson(params)).build().execute(callback);
+        OkHttpUtils.post().url(UrlCat.URL_USER_HEADPIC).addHeader(KEY_TOKEN, SharedPreferencesUtils.getToken())
+                .params(params).addFile("headPic", headPic.getName(), headPic).build().execute(callback);
     }
 
     /**

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

@@ -6,7 +6,7 @@ package com.ynstkz.shitu.android.data;
 
 public class UrlCat {
 
-    private static final String HOST = "http://60.205.218.197/";
+    public static final String HOST = "http://60.205.218.197/";
 
     /**
      * 注册

+ 1 - 2
app/src/main/java/com/ynstkz/shitu/android/fragment/HomeFragment.java

@@ -224,8 +224,7 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
                 if (bannerBean != null) {
                     if ("200".equals(bannerBean.getCode())) {
                         if (bannerBean.getData() != null) {
-                            List<HomeBannerBean.DataBean> listData = bannerBean.getData();
-                            listBanner = listData;
+                            listBanner = bannerBean.getData();;
                             initBannerView();
                         }
                     } else {

+ 11 - 0
app/src/main/java/com/ynstkz/shitu/android/fragment/UserCenterFragment.java

@@ -14,6 +14,7 @@ import com.common.library.cache.Cache;
 import com.common.library.okhttp.callback.Callback;
 import com.google.gson.Gson;
 import com.ynstkz.shitu.android.R;
+import com.ynstkz.shitu.android.activity.AlterHeadpicActivity;
 import com.ynstkz.shitu.android.activity.MessageListActivity;
 import com.ynstkz.shitu.android.activity.MineCollectActivity;
 import com.ynstkz.shitu.android.activity.MineCommentActivity;
@@ -143,6 +144,16 @@ public class UserCenterFragment extends BaseFragment {
                 startActivity(new Intent(getActivity(), UserInfoActivity.class));
             }
         });
+
+        /**
+         * 头像
+         */
+        ivHead.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                startActivity(new Intent(getActivity(), AlterHeadpicActivity.class));
+            }
+        });
     }
 
     /**

+ 17 - 0
app/src/main/java/com/ynstkz/shitu/android/utils/FileUtils.java

@@ -5,6 +5,7 @@ import android.database.Cursor;
 import android.net.Uri;
 import android.os.Environment;
 import android.provider.OpenableColumns;
+import android.text.TextUtils;
 import android.util.Log;
 
 import com.ynstkz.shitu.android.application.STApplication;
@@ -18,6 +19,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 /**
  * 作者:fuchangle on 2018/3/1 13:42
@@ -281,4 +284,18 @@ public class FileUtils {
         }
         return count;
     }
+
+
+    /**
+     * 获取文件扩展名
+     * @param fileName
+     * @return
+     */
+    public static String getFileFormat( String fileName )
+    {
+        if( TextUtils.isEmpty(fileName) )	return "";
+
+        int point = fileName.lastIndexOf( '.' );
+        return fileName.substring( point+1 );
+    }
 }

+ 119 - 0
app/src/main/java/com/ynstkz/shitu/android/utils/ImageUtils.java

@@ -1,12 +1,20 @@
 package com.ynstkz.shitu.android.utils;
 
+import android.app.Activity;
+import android.database.Cursor;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
+import android.graphics.Matrix;
 import android.graphics.PixelFormat;
 import android.graphics.drawable.Drawable;
+import android.net.Uri;
 import android.os.Environment;
+import android.provider.MediaStore;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 
@@ -16,6 +24,9 @@ import java.io.IOException;
 
 public class ImageUtils {
 
+    public final static String SDCARD_MNT = "/mnt/sdcard";
+    public final static String SDCARD = "/sdcard";
+
     /**
      * drawable转bitmap
      * @param drawable
@@ -71,4 +82,112 @@ public class ImageUtils {
         }
         return f;
     }
+
+    /**
+     * 判断当前Url是否标准的content://样式,如果不是,则返回绝对路径
+     *
+     * @return
+     */
+    public static String getAbsolutePathFromNoStandardUri(Uri mUri) {
+        String filePath = null;
+
+        String mUriString = mUri.toString();
+        mUriString = Uri.decode(mUriString);
+
+        String pre1 = "file://" + SDCARD + File.separator;
+        String pre2 = "file://" + SDCARD_MNT + File.separator;
+
+        if (mUriString.startsWith(pre1)) {
+            filePath = Environment.getExternalStorageDirectory().getPath()
+                    + File.separator + mUriString.substring(pre1.length());
+        } else if (mUriString.startsWith(pre2)) {
+            filePath = Environment.getExternalStorageDirectory().getPath()
+                    + File.separator + mUriString.substring(pre2.length());
+        }
+        return filePath;
+    }
+
+    /**
+     * 通过uri获取文件的绝对路径
+     *
+     * @param uri
+     * @return
+     */
+    @SuppressWarnings("deprecation")
+    public static String getAbsoluteImagePath(Activity context, Uri uri) {
+        String imagePath = "";
+        String[] proj = { MediaStore.Images.Media.DATA };
+        Cursor cursor = context.managedQuery(uri, proj, // Which columns to
+                // return
+                null, // WHERE clause; which rows to return (all rows)
+                null, // WHERE clause selection arguments (none)
+                null); // Order-by clause (ascending by name)
+
+        if (cursor != null) {
+            int column_index = cursor
+                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
+            if (cursor.getCount() > 0 && cursor.moveToFirst()) {
+                imagePath = cursor.getString(column_index);
+            }
+        }
+        return imagePath;
+    }
+
+    public static Bitmap loadImgThumbnail(String filePath, int w, int h) {
+        Bitmap bitmap = getBitmapByPath(filePath);
+        return zoomBitmap(bitmap, w, h);
+    }
+
+    /**
+     * 获取bitmap
+     *
+     * @param filePath
+     * @return
+     */
+    public static Bitmap getBitmapByPath(String filePath) {
+        return getBitmapByPath(filePath, null);
+    }
+
+    public static Bitmap getBitmapByPath(String filePath, BitmapFactory.Options opts) {
+        FileInputStream fis = null;
+        Bitmap bitmap = null;
+        try {
+            File file = new File(filePath);
+            fis = new FileInputStream(file);
+            bitmap = BitmapFactory.decodeStream(fis, null, opts);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (OutOfMemoryError e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                fis.close();
+            } catch (Exception e) {
+            }
+        }
+        return bitmap;
+    }
+
+    /**
+     * 放大缩小图片
+     *
+     * @param bitmap
+     * @param w
+     * @param h
+     * @return
+     */
+    public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {
+        Bitmap newbmp = null;
+        if (bitmap != null) {
+            int width = bitmap.getWidth();
+            int height = bitmap.getHeight();
+            Matrix matrix = new Matrix();
+            float scaleWidht = ((float) w / width);
+            float scaleHeight = ((float) h / height);
+            matrix.postScale(scaleWidht, scaleHeight);
+            newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix,
+                    true);
+        }
+        return newbmp;
+    }
 }

+ 35 - 0
app/src/main/res/layout/activity_alter_headpic.xml

@@ -0,0 +1,35 @@
+<?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:background="@color/default_bg">
+
+    <include layout="@layout/view_title"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="@dimen/default_content_margin">
+
+        <ImageView
+            android:id="@+id/iv_headPic"
+            android:layout_width="@dimen/company_250dp"
+            android:layout_height="@dimen/company_250dp"
+            android:layout_gravity="center"
+            android:layout_marginTop="@dimen/company_20dp"
+            android:background="@mipmap/ic_launcher"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/company_40dp"
+            android:layout_gravity="center_horizontal"
+            android:textColor="@color/color_666"
+            android:textSize="@dimen/company_13sp"
+            android:text="点击图片可替换头像"/>
+
+    </LinearLayout>
+
+</LinearLayout>

+ 24 - 0
app/src/main/res/layout/item_org_comment_list.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="@dimen/default_content_margin">
+
+    <ImageView
+        android:id="@+id/iv_icon"
+        android:layout_width="@dimen/company_40dp"
+        android:layout_height="@dimen/company_40dp"
+        android:scaleType="centerCrop"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:layout_marginLeft="@dimen/company_10dp">
+
+
+
+    </LinearLayout>
+
+</LinearLayout>