浏览代码

no message

Fenix Wang 8 年之前
父节点
当前提交
955da0ba8f
共有 34 个文件被更改,包括 493 次插入106 次删除
  1. 1 7
      app/app.iml
  2. 7 2
      app/build.gradle
  3. 1 1
      app/res/layout/main.xml
  4. 0 8
      app/res/layout/mine_about_sheishuo.xml
  5. 11 3
      app/res/layout/mine_feedback_activity.xml
  6. 1 1
      app/res/layout/mine_fragment.xml
  7. 5 3
      app/res/layout/mine_settings.xml
  8. 1 1
      app/res/layout/mine_trade.xml
  9. 1 1
      app/res/layout/trade_change_priority.xml
  10. 1 1
      app/res/values/strings.xml
  11. 4 3
      app/src/com/sheishuo/app/common/beans/CityDataBean.java
  12. 9 0
      app/src/com/sheishuo/app/common/beans/TradeBean.java
  13. 125 8
      app/src/com/sheishuo/app/common/util/location/CityDataHelper.java
  14. 3 0
      app/src/com/sheishuo/app/common/util/net/INet.java
  15. 49 0
      app/src/com/sheishuo/app/common/util/net/NetImpl.java
  16. 2 0
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  17. 4 2
      app/src/com/sheishuo/app/common/views/WheelView.java
  18. 0 12
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/AboutActivity.java
  19. 146 4
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/FeedbackActivity.java
  20. 1 1
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineTradeActivity.java
  21. 21 3
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineUploadPhotoActivity.java
  22. 1 1
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/UserInfoDetailActivity.java
  23. 7 2
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/UserInfoSettingActivity.java
  24. 1 1
      app/src/com/sheishuo/app/core_module/trade/presenter/TradePresenter.java
  25. 1 1
      app/src/com/sheishuo/app/core_module/trade/view/adapter/TradeItemAdapter.java
  26. 2 2
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeDetailsActivity.java
  27. 14 4
      app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradePublishActivity.java
  28. 2 2
      app/src/com/sheishuo/app/main/activity/MainActivity.java
  29. 33 4
      app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java
  30. 1 1
      app/src/com/sheishuo/app/main/fragment/TradeListFragment.java
  31. 1 1
      build.gradle
  32. 1 1
      gradle.properties
  33. 29 18
      uikit/res/layout/gift_panel.xml
  34. 7 7
      uikit/uikit.iml

+ 1 - 7
app/app.iml

@@ -128,6 +128,7 @@
     <orderEntry type="library" exported="" name="okio-1.13.0" level="project" />
     <orderEntry type="library" exported="" name="retrofit-2.3.0" level="project" />
     <orderEntry type="library" exported="" name="converter-gson-2.3.0" level="project" />
+    <orderEntry type="library" exported="" name="Android-PickerView-3.2.5" level="project" />
     <orderEntry type="library" exported="" name="runtime-0.8.7" level="project" />
     <orderEntry type="library" exported="" name="okhttp-3.8.0" level="project" />
     <orderEntry type="library" exported="" name="AMap_Services_V2.3.1" level="project" />
@@ -145,12 +146,5 @@
     <orderEntry type="library" exported="" name="support-compat-25.3.1" level="project" />
     <orderEntry type="library" exported="" name="animated-vector-drawable-25.3.1" level="project" />
     <orderEntry type="module" module-name="uikit" exported="" />
-    <orderEntry type="library" exported="" name="java-json" level="project" />
-    <orderEntry type="library" exported="" name="renderscript-v8" level="project" />
-    <orderEntry type="library" exported="" name="glide-3.7.0" level="project" />
-    <orderEntry type="library" exported="" name="nim-avchat-4.0.0" level="project" />
-    <orderEntry type="library" exported="" name="nim-basesdk-4.0.0" level="project" />
-    <orderEntry type="library" exported="" name="fastjson-1.1.34.android" level="project" />
-    <orderEntry type="library" exported="" name="nim-lucene-4.0.0" level="project" />
   </component>
 </module>

+ 7 - 2
app/build.gradle

@@ -21,6 +21,9 @@ android {
         buildConfigField "String", "BUILD_DATE", "\"${new Date().toLocaleString()}\"";
         multiDexEnabled true
 
+        versionCode 1
+        versionName "1.0.0"
+
         ndk {
             abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
         }
@@ -125,6 +128,8 @@ dependencies {
     compile 'com.android.support:cardview-v7:25.1.1'
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
 
-//    compile 'com.tencent.bugly:crashreport:latest.release'
-//    compile 'com.tencent.bugly:nativecrashreport:latest.release'
+    compile 'com.tencent.bugly:crashreport:latest.release'
+    compile 'com.tencent.bugly:nativecrashreport:latest.release'
+
+    compile 'com.contrarywind:Android-PickerView:3.2.5'
 }

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

@@ -167,7 +167,7 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="28dp"
-                        android:text="快讯"
+                        android:text="快讯广告"
                         android:textAlignment="center"
                         android:textSize="11sp" />
 

+ 0 - 8
app/res/layout/mine_about_sheishuo.xml

@@ -45,14 +45,6 @@
             android:visibility="gone"
             android:textColor="#5779ff"/>
 
-        <TextView
-            android:id="@+id/mine_about_law_TV"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="国家法律法规"
-            android:textColor="#5779ff"
-            android:layout_marginTop="16dp"/>
-
     </LinearLayout>
 
     <WebView

+ 11 - 3
app/res/layout/mine_feedback_activity.xml

@@ -12,8 +12,7 @@
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            app:title="帮助与反馈"
-            app:left_text="返回"/>
+            style="@style/fullToolbarStyle"/>
     </android.support.design.widget.AppBarLayout>
 
 
@@ -26,7 +25,16 @@
         <EditText
             android:id="@+id/mine_feedback_ET"
             android:layout_width="match_parent"
-            android:layout_height="200dp" />
+            android:layout_height="wrap_content"
+            android:hint="请输入要反馈的内容" />
+
+        <ImageView
+            android:id="@+id/mine_feedback_image"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:adjustViewBounds="true"
+            android:scaleType="centerCrop"
+            app:srcCompat="@drawable/chat_01_pressed" />
 
     </LinearLayout>
 </LinearLayout>

+ 1 - 1
app/res/layout/mine_fragment.xml

@@ -228,7 +228,7 @@
                         android:layout_marginLeft="8dp"
                         android:layout_marginStart="8dp"
                         android:layout_weight="7"
-                        android:text="我的快讯"
+                        android:text="我的快讯广告"
                         android:textStyle="bold" />
 
                     <ImageView

+ 5 - 3
app/res/layout/mine_settings.xml

@@ -43,6 +43,7 @@
         <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
             android:layout_marginLeft="4dp"
             android:layout_marginStart="4dp"
             android:src="@drawable/right_arrow" />
@@ -79,6 +80,7 @@
         <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
             android:layout_marginLeft="4dp"
             android:layout_marginStart="4dp"
             android:src="@drawable/right_arrow" />
@@ -105,10 +107,10 @@
             android:text="隐私" />
 
 
-
         <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
             android:layout_marginLeft="4dp"
             android:layout_marginStart="4dp"
             android:src="@drawable/right_arrow" />
@@ -135,10 +137,10 @@
             android:text="帮助与反馈" />
 
 
-
         <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
             android:layout_marginLeft="4dp"
             android:layout_marginStart="4dp"
             android:src="@drawable/right_arrow" />
@@ -167,10 +169,10 @@
             android:text="关于谁说" />
 
 
-
         <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
             android:layout_marginLeft="4dp"
             android:layout_marginStart="4dp"
             android:src="@drawable/right_arrow" />

+ 1 - 1
app/res/layout/mine_trade.xml

@@ -14,7 +14,7 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/action_bar_height"
             style="@style/fullToolbarStyle"
-            app:title="我的快讯"/>
+            app:title="我的快讯广告"/>
     </android.support.design.widget.AppBarLayout>
 
     <android.support.design.widget.TabLayout

+ 1 - 1
app/res/layout/trade_change_priority.xml

@@ -47,7 +47,7 @@
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:text="一天可发布三条,道具数量决定快讯排名"
+            android:text="一天可发布三条"
             android:textAlignment="center"
             android:textColor="@android:color/holo_red_dark"
             android:textSize="10sp" />

+ 1 - 1
app/res/values/strings.xml

@@ -5,7 +5,7 @@
     <string name="hello_world">Hello world!</string>
     <string name="empty"></string>
     <string name="main_tab_groups">聊天室</string>
-    <string name="main_tab_trade">快讯</string>
+    <string name="main_tab_trade">快讯广告</string>
     <string name="main_tab_circleoffriends">动态</string>
     <string name="main_tab_friends">朋友</string>
     <string name="main_tab_mine">我的</string>

+ 4 - 3
app/src/com/sheishuo/app/common/beans/CityDataBean.java

@@ -1,6 +1,7 @@
 package com.sheishuo.app.common.beans;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -40,7 +41,7 @@ public class CityDataBean implements Serializable{
          */
 
         private String name;
-        private List<String> area;
+        private ArrayList<String> area;
 
         public String getName() {
             return name;
@@ -50,11 +51,11 @@ public class CityDataBean implements Serializable{
             this.name = name;
         }
 
-        public List<String> getArea() {
+        public ArrayList<String> getArea() {
             return area;
         }
 
-        public void setArea(List<String> area) {
+        public void setArea(ArrayList<String> area) {
             this.area = area;
         }
     }

+ 9 - 0
app/src/com/sheishuo/app/common/beans/TradeBean.java

@@ -75,6 +75,7 @@ public class TradeBean implements Serializable{
             private String pic;
             private String priority_type;
             private String priority;
+            private String price;
             private String review;
             private String inputtime;
             private int follow;
@@ -163,6 +164,14 @@ public class TradeBean implements Serializable{
                 this.priority = priority;
             }
 
+            public String getPrice() {
+                return price;
+            }
+
+            public void setPrice(String price) {
+                this.price = price;
+            }
+
             public String getReview() {
                 return review;
             }

+ 125 - 8
app/src/com/sheishuo/app/common/util/location/CityDataHelper.java

@@ -1,11 +1,20 @@
 package com.sheishuo.app.common.util.location;
 
 import android.content.Context;
+import android.graphics.Color;
 import android.util.Log;
-
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+import com.bigkoo.pickerview.OptionsPickerView;
+import com.bigkoo.pickerview.lib.WheelView;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.sheishuo.app.R;
+import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.common.beans.CityDataBean;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
@@ -22,7 +31,9 @@ import java.util.List;
 public class CityDataHelper {
     static INet net;
     static List<CityDataBean> list;
-    static List<String> provinces;
+    static ArrayList<String> provinces;
+    static ArrayList<ArrayList<String>> citys;
+    static ArrayList<ArrayList<ArrayList<String>>> districts;
     static HashMap<String,List<String>> provinceCityMap;
     static HashMap<String,List<String>> cityAreaMap;
 
@@ -32,6 +43,9 @@ public class CityDataHelper {
         net = new NetImpl();
         list = new ArrayList<>();
         provinces = new ArrayList<>();
+        citys = new ArrayList<ArrayList<String>>();
+        districts = new ArrayList<ArrayList<ArrayList<String>>>();
+
         provinceCityMap = new HashMap<>();
         cityAreaMap = new HashMap<>();
 
@@ -50,20 +64,27 @@ public class CityDataHelper {
 
 
         String jsonStr = context.getString(R.string.city_data);
-        list.clear();
-        List<CityDataBean> temp = new Gson().fromJson(jsonStr,new TypeToken<List<CityDataBean>>(){}.getType());
-        list.addAll(temp);
+        list = new Gson().fromJson(jsonStr,new TypeToken<List<CityDataBean>>(){}.getType());
 
         Log.e("size",list.size()+"");
 
         for (CityDataBean provinceBean : list){
-            List<String> tempList = new ArrayList<>();
+
+            ArrayList<String> cityList = new ArrayList<>();
+            ArrayList<ArrayList<String>> districtList = new ArrayList<ArrayList<String>>();
+
             for (CityDataBean.CityBean cityBean : provinceBean.getCity()){
-                tempList.add(cityBean.getName());
+                cityList.add(cityBean.getName());
+                districtList.add(cityBean.getArea());
                 cityAreaMap.put(cityBean.getName(),cityBean.getArea());
             }
+
             provinces.add(provinceBean.getName());
-            provinceCityMap.put(provinceBean.getName(),tempList);
+
+            provinceCityMap.put(provinceBean.getName(), cityList);
+            citys.add(cityList);
+
+            districts.add(districtList);
         }
 
         for (String str : getAllProvince()){
@@ -87,6 +108,10 @@ public class CityDataHelper {
         return null;
     }
 
+    public static ArrayList<ArrayList<String>> getAllCity()
+    {
+        return citys;
+    }
 
     public static List<String> getArea(String city){
         if (cityAreaMap != null && cityAreaMap.containsKey(city)){
@@ -95,4 +120,96 @@ public class CityDataHelper {
         return null;
     }
 
+    public static ArrayList<ArrayList<ArrayList<String>>> getAllDistrict()
+    {
+        return districts;
+    }
+
+
+    public static void showPickerView(Context context, OptionsPickerView.OnOptionsSelectListener listener) {
+
+        int provinceIndex = 0;
+        String currentProvince = AccountCache.getAccount().getProvince();
+        if(currentProvince != null)
+            provinceIndex = CityDataHelper.getAllProvince().indexOf(currentProvince);
+        provinceIndex = Math.max(provinceIndex, 0);
+        currentProvince = CityDataHelper.getAllProvince().get(provinceIndex);
+
+        int cityIndex = 0;
+        String currentCity = AccountCache.getAccount().getCity();
+        if(currentCity != null)
+            cityIndex = CityDataHelper.getCity(currentProvince).indexOf(currentCity);
+        cityIndex = Math.max(cityIndex, 0);
+        currentCity = CityDataHelper.getCity(currentProvince).get(cityIndex);
+
+        int districtIndex = 0;
+        String currentDistrict = AccountCache.getAccount().getDistrict();
+        if(currentDistrict != null)
+            districtIndex = CityDataHelper.getArea(currentCity).indexOf(currentDistrict);
+        districtIndex = Math.max(districtIndex, 0);
+        currentDistrict = CityDataHelper.getArea(currentCity).get(districtIndex);
+
+
+        OptionsPickerView pvOptions = new OptionsPickerView.Builder(context, listener)
+                .setTitleText("请选择城市")
+                .setCancelText("取消")
+                .setSubmitText("保存")
+                .setDividerColor(Color.GRAY)
+                .setTextColorCenter(Color.GRAY)
+                .setContentTextSize(13)
+                .setOutSideCancelable(false)
+                .setSelectOptions(provinceIndex, cityIndex, districtIndex)
+                .build();
+
+          /*pvOptions.setPicker(options1Items);//一级选择器
+        pvOptions.setPicker(options1Items, options2Items);//二级选择器*/
+        pvOptions.setPicker(CityDataHelper.getAllProvince(), CityDataHelper.getAllCity(), CityDataHelper.getAllDistrict());//三级选择器
+        View view = pvOptions.findViewById(com.bigkoo.pickerview.R.id.optionspicker);
+        while(view.getParent() != null)
+        {
+            if(view.getParent() instanceof View)
+            {
+                view = (View) view.getParent();
+                if(view.getId() == com.bigkoo.pickerview.R.id.content_container)
+                {
+                    view.setLayoutParams(new FrameLayout.LayoutParams(
+                            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.BOTTOM
+                    ));
+                    break;
+                }
+                else
+                {
+                    ViewGroup.LayoutParams viewLayout = view.getLayoutParams();
+                    viewLayout.height = ViewGroup.LayoutParams.MATCH_PARENT;
+                    view.setLayoutParams(viewLayout);
+                }
+            }
+            else
+            {
+                break;
+            }
+        }
+        LinearLayout optionsPicker = (LinearLayout) pvOptions.findViewById(com.bigkoo.pickerview.R.id.optionspicker);
+        LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)optionsPicker.getLayoutParams();
+        layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT;
+        optionsPicker.setLayoutParams(layoutParams);
+
+        View wv_option1 = optionsPicker.findViewById(com.bigkoo.pickerview.R.id.options1);// 初始化时显示的数据
+        View wv_option2 = optionsPicker.findViewById(com.bigkoo.pickerview.R.id.options2);
+        View wv_option3 = optionsPicker.findViewById(com.bigkoo.pickerview.R.id.options3);
+
+        ViewGroup.LayoutParams optionLayout = wv_option1.getLayoutParams();
+        optionLayout.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        wv_option1.setLayoutParams(optionLayout);
+
+        optionLayout = wv_option2.getLayoutParams();
+        optionLayout.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        wv_option2.setLayoutParams(optionLayout);
+
+        optionLayout = wv_option3.getLayoutParams();
+        optionLayout.height = ViewGroup.LayoutParams.MATCH_PARENT;
+        wv_option3.setLayoutParams(optionLayout);
+
+        pvOptions.show();
+    }
 }

+ 3 - 0
app/src/com/sheishuo/app/common/util/net/INet.java

@@ -67,4 +67,7 @@ public interface INet {
 
     //chat room intro
     void getChatRoomIntro(ResponseCallback callback);
+
+    //feedback
+    void feedBack(String msg, String filePath, ResponseCallback callback);
 }

+ 49 - 0
app/src/com/sheishuo/app/common/util/net/NetImpl.java

@@ -1596,4 +1596,53 @@ public class NetImpl implements INet {
             }
         }).start();
     }
+
+
+    @Override
+    public void feedBack(final String msg, final String filePath, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    MultipartBody.Builder builder = new MultipartBody.Builder();
+                    builder.setType(MultipartBody.FORM);
+
+                    builder.addFormDataPart("user_id", AccountCache.getAccount().getId());
+                    builder.addFormDataPart("msg", msg);
+
+                    if(filePath != null) {
+                        String targetPath = SheishuoApplication.getContext().getCacheDir() + "/compressPic.jpg";
+                        //调用压缩图片的方法,返回压缩后的图片path
+                        File compressedPic = ImgUtil.compressImage(filePath, targetPath, 50);
+                        builder.addFormDataPart("upload", compressedPic.getName(), RequestBody.create(null, compressedPic));
+                    }
+
+                    RequestBody body = builder.build();
+                    Request request = new Request.Builder()
+                            .url(NetInfo.FEEDBACK_URL)
+                            .post(body)
+                            .build();
+
+                    Response response = client.newCall(request).execute();
+                    if (200 == response.code()) {
+                        String result = response.body().string();
+                        JSONObject jsonObject = new JSONObject(result);
+                        int c = jsonObject.getInt("c");
+                        if(c == 0) {
+                            callback.onSuccess(null);
+                        }
+                        else
+                        {
+                            callback.onFailed();
+                        }
+                    } else {
+                        callback.onFailed();
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed();
+                }
+            }
+        }).start();
+    }
 }

+ 2 - 0
app/src/com/sheishuo/app/common/util/net/NetInfo.java

@@ -64,4 +64,6 @@ public class NetInfo {
     public final static String LAW_URL = INDEX + "?m=who&c=index&a=webview&id=law";
     public final static String CHAT_ROOM_INTRO_URL = INDEX + "?m=who&c=index&a=chatroom_intro";
 
+    //feedback
+    public final static String FEEDBACK_URL = INDEX + "?m=who&c=feedback&a=report";
 }

+ 4 - 2
app/src/com/sheishuo/app/common/views/WheelView.java

@@ -194,9 +194,11 @@ public class WheelView extends ScrollView {
         if (0 == itemHeight) {
             itemHeight = getViewMeasuredHeight(tv);
             Log.d(TAG, "itemHeight: " + itemHeight);
-            views.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, itemHeight * displayItemCount));
+            //views.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, itemHeight * displayItemCount));
+            views.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
             LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) this.getLayoutParams();
-            this.setLayoutParams(new LinearLayout.LayoutParams(lp.width, itemHeight * displayItemCount));
+//            this.setLayoutParams(new LinearLayout.LayoutParams(lp.width, itemHeight * displayItemCount));
+            this.setLayoutParams(new LinearLayout.LayoutParams(lp.width, ViewGroup.LayoutParams.MATCH_PARENT));
         }
         return tv;
     }

+ 0 - 12
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/AboutActivity.java

@@ -38,7 +38,6 @@ public class AboutActivity extends SheishuoUI {
         toolbar = findView(R.id.toolbar);
         versionTV = findView(R.id.mine_about_version_TV);
         agreementTV  = findView(R.id.mine_about_agreement_TV);
-        lawTV = findView(R.id.mine_about_law_TV);
         webView = findView(R.id.mine_about_webview);
     }
 
@@ -71,16 +70,5 @@ public class AboutActivity extends SheishuoUI {
                 startActivity(intent);
             }
         });
-
-
-        lawTV.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                Intent intent = new Intent(context,AboutWebViewActivity.class);
-                intent.putExtra(AboutWebViewActivity.TITLE,"国家法律法规");
-                intent.putExtra(AboutWebViewActivity.URL,NetInfo.LAW_URL);
-                startActivity(intent);
-            }
-        });
     }
 }

+ 146 - 4
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/FeedbackActivity.java

@@ -1,16 +1,36 @@
 package com.sheishuo.app.core_module.mine.view.ui.activity;
 
+import android.app.Activity;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
+import android.os.IBinder;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.MotionEvent;
 import android.view.View;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.Button;
 import android.widget.EditText;
+import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.bumptech.glide.Glide;
+import com.netease.nim.uikit.common.media.picker.PickImageHelper;
+import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
+import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
+import com.netease.nim.uikit.session.constant.Extras;
 import com.sheishuo.app.R;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.core_module.trade.view.ui.activity.TradePublishActivity;
 import com.sheishuo.app.impl.SheishuoUI;
 
+import java.util.List;
+
 /**
  * Created by KN on 2017/8/31.
  */
@@ -25,9 +45,8 @@ public class FeedbackActivity extends SheishuoUI {
     private BaseToolbar toolbar;
 
     private EditText feedbackET;
-
-    private Button submibtBtn;
-
+    private ImageView feedbackImg;
+    private String filePath;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -40,6 +59,7 @@ public class FeedbackActivity extends SheishuoUI {
 
     void findViews(){
         feedbackET = findView(R.id.mine_feedback_ET);
+        feedbackImg = findView(R.id.mine_feedback_image);
     }
 
 
@@ -59,11 +79,133 @@ public class FeedbackActivity extends SheishuoUI {
         submitTxt.setOnClickListener(new View.OnClickListener(){
             @Override
             public void onClick(View v) {
-                String feedback = feedbackET.getText().toString();
+                send();
+            }
+        });
+        toolbar.setRightItems(new View[]{submitTxt});
+
+        feedbackImg.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
+                option.multiSelectMaxCount = 1;
+                PickImageHelper.pickImage(context, 0, option);
+            }
+        });
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode == Activity.RESULT_OK) {
+            for (String key : data.getExtras().keySet()) {
+                Log.e("key", key);
+            }
+
+            Bundle result = data.getExtras();
+            if (!result.getBoolean(Extras.EXTRA_FROM_LOCAL)) {
+                //照相机
+                setImage(result.getString(Extras.EXTRA_FILE_PATH));
+            } else {
+                //相册
+
+                List<PhotoInfo> photoInfoList = (List<PhotoInfo>) result.getSerializable("photo_list");
+                for (PhotoInfo info : photoInfoList) {
+                    setImage(info.getAbsolutePath());
+                }
+            }
+        }
+    }
+
+    private void setImage(String filePath)
+    {
+        this.filePath = filePath;
+        Glide.with(context).load(filePath)
+                .into(feedbackImg);
+    }
+
+    private void send()
+    {
+        String feedback = feedbackET.getText().toString();
+        if(TextUtils.isEmpty(feedback))
+        {
+            EasyAlertDialogHelper.showOneButtonDiolag(FeedbackActivity.this, "提示",
+                    "内容不能为空", "确认", false, null);
+            return;
+        }
+
+        DialogMaker.showProgressDialog(this, "");
+
+        INet net = new NetImpl();
+        net.feedBack(feedback, filePath, new ResponseCallback() {
+            @Override
+            public void onSuccess(Object object) {
                 showToast(context,"反馈成功");
+                DialogMaker.dismissProgressDialog();
                 finish();
             }
+
+            @Override
+            public void onFailed() {
+                showToast(context,"反馈失败,请重试!");
+                DialogMaker.dismissProgressDialog();
+            }
         });
 
+
+    }
+
+
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+
+            // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
+            View v = getCurrentFocus();
+
+            if (isShouldHideInput(v, ev)) {
+                hideSoftInput(v.getWindowToken());
+            }
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    /**
+     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏
+     *
+     * @param v
+     * @param event
+     * @return
+     */
+    private boolean isShouldHideInput(View v, MotionEvent event) {
+        if (v != null && (v instanceof EditText)) {
+            int[] l = { 0, 0 };
+            v.getLocationInWindow(l);
+            int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left
+                    + v.getWidth();
+            if (event.getX() > left && event.getX() < right
+                    && event.getY() > top && event.getY() < bottom) {
+                // 点击EditText的事件,忽略它。
+                return false;
+            } else {
+                return true;
+            }
+        }
+        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点
+        return false;
+    }
+
+    /**
+     * 多种隐藏软件盘方法的其中一种
+     *
+     * @param token
+     */
+    private void hideSoftInput(IBinder token) {
+        if (token != null) {
+            InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+            im.hideSoftInputFromWindow(token,
+                    InputMethodManager.HIDE_NOT_ALWAYS);
+        }
     }
 }

+ 1 - 1
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineTradeActivity.java

@@ -76,7 +76,7 @@ public class MineTradeActivity extends SheishuoUI {
 
     void init(){
 
-        toolbar.setTitle("我的快讯");
+        toolbar.setTitle("我的快讯广告");
         toolbar.setBackOnClickListener(new View.OnClickListener(){
             @Override
             public void onClick(View v) {

+ 21 - 3
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/MineUploadPhotoActivity.java

@@ -20,6 +20,7 @@ import com.netease.nim.uikit.common.media.picker.activity.PickImageActivity;
 import com.netease.nim.uikit.common.media.picker.activity.PickerAlbumActivity;
 import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
 import com.netease.nim.uikit.common.ui.dialog.CustomAlertDialog;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
 import com.netease.nim.uikit.session.activity.WatchPictureActivity;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.msg.SystemMessageService;
@@ -251,9 +252,7 @@ public class MineUploadPhotoActivity extends SheishuoUI {
         addPhotoBtn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
-                PickImageActivity.start((Activity) context, ADD_PHOTOS_CODE, PickImageActivity.FROM_LOCAL, option.outputPath, option.multiSelect,
-                        option.multiSelectMaxCount, true, false, 0, 0);
+                showImagePick();
             }
         });
         gridLayout.addView(addPhotoBtn);
@@ -261,6 +260,25 @@ public class MineUploadPhotoActivity extends SheishuoUI {
 
 
 
+    private void showImagePick()
+    {
+        List<SocialPhoto> photos = SocialInfoCache.get(AccountCache.getAccount().getId()).getPhotos();
+        int limit = 9 - photos.size();
+        if(limit <= 0)
+        {
+            EasyAlertDialogHelper.showOneButtonDiolag(MineUploadPhotoActivity.this, "提示",
+                    "上传数量已达最多", "确认", false, null);
+            return;
+        }
+
+        PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
+        option.multiSelectMaxCount = limit;
+        PickImageActivity.start((Activity) context, ADD_PHOTOS_CODE, PickImageActivity.FROM_LOCAL, option.outputPath, option.multiSelect,
+                option.multiSelectMaxCount, true, false, 0, 0);
+    }
+
+
+
 
 
     private void showLongClickMenu(final SocialPhoto photo) {

+ 1 - 1
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/UserInfoDetailActivity.java

@@ -92,7 +92,7 @@ public class UserInfoDetailActivity extends SheishuoUI {
             init();
         }
 
-        //for crash test
+//        //for crash test
 //        CrashReport.testJavaCrash();
 
     }

+ 7 - 2
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/UserInfoSettingActivity.java

@@ -167,7 +167,7 @@ public class UserInfoSettingActivity extends SheishuoUI {
                         WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
             }
         });
-        requestDialog.addPositiveButtonListener(R.string.send, new View.OnClickListener() {
+        requestDialog.addPositiveButtonListener(R.string.ok, new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 requestDialog.dismiss();
@@ -193,9 +193,14 @@ public class UserInfoSettingActivity extends SheishuoUI {
             net.updateAlias(userId, data, new ResponseCallback() {
                 @Override
                 public void onSuccess(Object object) {
+                    getHandler().post(new Runnable() {
+                        @Override
+                        public void run() {
+                            remarkTV.setText(data);
+                        }
+                    });
                     SocialInfoCache.setAlias(userId, data);
                     NimUserInfoCache.getInstance().setAlias(userId, data);
-                    remarkTV.setText(data);
                     DialogMaker.dismissProgressDialog();
                 }
 

+ 1 - 1
app/src/com/sheishuo/app/core_module/trade/presenter/TradePresenter.java

@@ -147,7 +147,7 @@ public class TradePresenter {
         final AlertDialog.Builder normalDialog =
                 new AlertDialog.Builder(context);
         normalDialog.setTitle("删除提示");
-        normalDialog.setMessage("确定删除该快讯?");
+        normalDialog.setMessage("确定删除该快讯广告?");
         normalDialog.setPositiveButton("确定",
                 new DialogInterface.OnClickListener() {
                     @Override

+ 1 - 1
app/src/com/sheishuo/app/core_module/trade/view/adapter/TradeItemAdapter.java

@@ -128,7 +128,7 @@ public class TradeItemAdapter extends RecyclerView.Adapter<TradeItemAdapter.Trad
 
         //设置置顶权限
         if (bean.getPriority() != null && Integer.valueOf(bean.getPriority()) > 0) {
-            holder.priority.setText("置顶x" + bean.getPriority());
+            holder.priority.setText("置顶x" + bean.getPrice());
         }
 
 

+ 2 - 2
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradeDetailsActivity.java

@@ -127,7 +127,7 @@ public class TradeDetailsActivity extends SheishuoUI {
         locationTV.setText(bean.getDistrict());
         dateTV.setText(bean.getInputtime());
         if (bean.getPriority().equals("0")) priorityTV.setVisibility(View.INVISIBLE);
-        priorityTV.setText("置顶x" + bean.getPriority());
+        priorityTV.setText("置顶x" + bean.getPrice());
         priorityTV.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -197,6 +197,6 @@ public class TradeDetailsActivity extends SheishuoUI {
     public void onPriorityUpdate(String tradeId, String priority)
     {
         bean.setPriority(priority);
-        priorityTV.setText("置顶x" + bean.getPriority());
+        priorityTV.setText("置顶x" + bean.getPrice());
     }
 }

+ 14 - 4
app/src/com/sheishuo/app/core_module/trade/view/ui/activity/TradePublishActivity.java

@@ -7,6 +7,7 @@ import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
@@ -45,6 +46,7 @@ import com.sheishuo.app.core_module.trade.model.TradeModel;
 import com.sheishuo.app.core_module.trade.presenter.TradePresenter;
 import com.sheishuo.app.core_module.trade.view.adapter.TradeItemAdapter;
 import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.login.beans.LoginBean;
 
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -154,10 +156,11 @@ public class TradePublishActivity extends SheishuoUI {
             }
         });
         //设置Spinner
-        priorityTypeList.add("国家道具");
-        priorityTypeList.add("省份道具");
-        priorityTypeList.add("城市道具");
-        priorityTypeList.add("地区道具");
+        List<LoginBean.DBean.TradePriorityBean> priorityBeanList = AccountCache.getAccount().getTrade_priority();
+        for(LoginBean.DBean.TradePriorityBean bean : priorityBeanList)
+        {
+            priorityTypeList.add(bean.getName()+" "+bean.getPrice());
+        }
         adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item, priorityTypeList);
         spinner.setAdapter(adapter);
         spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@@ -348,6 +351,13 @@ public class TradePublishActivity extends SheishuoUI {
 
     public void publish()
     {
+        if(TextUtils.isEmpty(tradeContentET.getText().toString()))
+        {
+            EasyAlertDialogHelper.showOneButtonDiolag(TradePublishActivity.this, "提示",
+                    "发布的内容不能为空", "确认", false, null);
+            return;
+        }
+
         DialogMaker.showProgressDialog(TradePublishActivity.this, "");
 
         photoIds.clear();

+ 2 - 2
app/src/com/sheishuo/app/main/activity/MainActivity.java

@@ -127,11 +127,11 @@ public class MainActivity extends SheishuoUI {
         }
 
 
-//        CrashReport.initCrashReport(getApplicationContext(), "81e3f6e720", true);
+        CrashReport.initCrashReport(getApplicationContext(), "81e3f6e720", true);
 
         onInit();
 
-
+//        CrashReport.testJavaCrash();
     }
 
     /**

+ 33 - 4
app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java

@@ -2,6 +2,7 @@ package com.sheishuo.app.main.fragment;
 
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.Color;
 import android.location.Location;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -11,6 +12,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.bigkoo.pickerview.OptionsPickerView;
 import com.netease.nim.uikit.LocationProvider;
 import com.netease.nim.uikit.NimUIKit;
 import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialog;
@@ -27,6 +29,7 @@ import com.sheishuo.app.cache.AccountCache;
 import com.sheishuo.app.cache.GiftCache;
 import com.sheishuo.app.common.beans.GiftBean;
 import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.util.location.CityDataHelper;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.ResponseCallback;
@@ -137,8 +140,9 @@ public class AreaGroupsFragment extends MainTabFragment implements NimLocationMa
         leftIcon.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                Intent intent = new Intent(getActivity(), LocationSelectActivity.class);
-                startActivityForResult(intent, 0);
+//                Intent intent = new Intent(getActivity(), LocationSelectActivity.class);
+//                startActivityForResult(intent, 0);
+                showLocationSelect();
             }
         });
 
@@ -147,8 +151,9 @@ public class AreaGroupsFragment extends MainTabFragment implements NimLocationMa
         toolbarLeftTxt.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                Intent intent = new Intent(getActivity(), LocationSelectActivity.class);
-                startActivityForResult(intent, 0);
+//                Intent intent = new Intent(getActivity(), LocationSelectActivity.class);
+//                startActivityForResult(intent, 0);
+                showLocationSelect();
             }
         });
 
@@ -497,4 +502,28 @@ public class AreaGroupsFragment extends MainTabFragment implements NimLocationMa
                 toolbarLeftTxt.setText(location);
         }
     }
+
+
+    private void showLocationSelect()
+    {
+        CityDataHelper.showPickerView(getContext(), new OptionsPickerView.OnOptionsSelectListener() {
+            @Override
+            public void onOptionsSelect(int options1, int options2, int options3, View v) {
+                String province = CityDataHelper.getAllProvince().get(options1);
+                String city = CityDataHelper.getAllCity().get(options1).get(options2);
+                String area = CityDataHelper.getAllDistrict().get(options1).get(options2).get(options3);
+
+                updateAccountLocation(province, city, area);
+
+                location = city + area;
+                if (location.length() > 6) {
+                    location = location.substring(0, 6) + "...";
+                }
+
+                if(toolbarLeftTxt != null)
+                    toolbarLeftTxt.setText(location);
+            }
+        });
+    }
+
 }

+ 1 - 1
app/src/com/sheishuo/app/main/fragment/TradeListFragment.java

@@ -141,7 +141,7 @@ public class TradeListFragment extends MainTabFragment {
     private void initToolbar(){
 
         toolbar.setVisibility(View.VISIBLE);
-        toolbar.setTitle("快讯");
+        toolbar.setTitle("快讯广告");
 
 
         ImageView leftIcon = new ImageView(getContext());

+ 1 - 1
build.gradle

@@ -27,7 +27,7 @@ ext {
     minSdkVersion = 14
     targetSdkVersion = 25
     versionCode = 1
-    versionName = 'Alpha'
+    versionName = '1.0.0'
     targetCompatibility = 1.7
     sourceCompatibility = 1.7
 }

+ 1 - 1
gradle.properties

@@ -15,4 +15,4 @@
 #Fri Jul 14 11:00:13 CST 2017
 systemProp.http.proxyHost=127.0.0.1
 systemProp.http.proxyPort=1086
-org.gradle.jvmargs=-Xmx4608M
+org.gradle.jvmargs=-Xmx4608M

+ 29 - 18
uikit/res/layout/gift_panel.xml

@@ -7,37 +7,48 @@
     android:padding="8dp"
     android:clickable="true">
 
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:padding="8dp">
 
         <TextView
-            android:layout_width="0dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="7"
             android:gravity="start"
             android:text="出售/求购"
             android:textColor="@color/color_gray_cbd0d8" />
 
-        <TextView
-            android:id="@+id/gift_panel_balance_TV"
-            android:layout_width="0dp"
+        <LinearLayout
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_gravity="end"
-            android:layout_weight="2"
-            android:text="余额"
-            android:textColor="@color/black" />
+            android:gravity="right"
+            android:orientation="horizontal">
 
-        <TextView
-            android:id="@+id/gift_panel_recharge_TV"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/rechage"
-            android:textColor="@color/green_4DC0A4" />
-    </LinearLayout>
+            <TextView
+                android:id="@+id/gift_panel_balance_TV"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="余额"
+                android:textColor="@color/black" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="   " />
+
+            <TextView
+                android:id="@+id/gift_panel_recharge_TV"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/rechage"
+                android:textColor="@color/green_4DC0A4" />
+
+        </LinearLayout>
+
+    </RelativeLayout>
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -128,7 +139,7 @@
             android:layout_marginBottom="-5dp"
             android:layout_marginTop="-5dp"
             android:enabled="false"
-            android:text="一天可发布三条,道具数量决定快讯排名"
+            android:text="一天可发布三条"
             android:textColor="@android:color/holo_red_dark"
             android:textSize="10sp" />
 

+ 7 - 7
uikit/uikit.iml

@@ -59,13 +59,6 @@
       <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -73,6 +66,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />