瀏覽代碼

聊聊用户界面开发

huyuguo 5 年之前
父節點
當前提交
bc4466bed0
共有 21 個文件被更改,包括 881 次插入108 次删除
  1. 11 11
      app/src/main/java/com/electric/chargingpile/activity/PersonalPageActivity.java
  2. 0 4
      app/src/main/java/com/electric/chargingpile/activity/PublishPicTopicActivity.java
  3. 2 2
      app/src/main/java/com/electric/chargingpile/activity/TopicDetailActivity.java
  4. 7 7
      app/src/main/java/com/electric/chargingpile/activity/TopicSearchListsActivity.java
  5. 2 1
      app/src/main/java/com/electric/chargingpile/activity/UserCenterActivity.java
  6. 275 1
      app/src/main/java/com/electric/chargingpile/activity/UserPageActivity.java
  7. 12 12
      app/src/main/java/com/electric/chargingpile/adapter/TopicDetailAdapter.java
  8. 257 0
      app/src/main/java/com/electric/chargingpile/adapter/UserPageAdapter.java
  9. 4 4
      app/src/main/java/com/electric/chargingpile/application/MainApplication.java
  10. 4 4
      app/src/main/java/com/electric/chargingpile/data/TopicDetailBeanLab.java
  11. 0 41
      app/src/main/java/com/electric/chargingpile/data/TopicDetailsListBean.java
  12. 13 13
      app/src/main/java/com/electric/chargingpile/data/HomePageBean.java
  13. 38 0
      app/src/main/java/com/electric/chargingpile/data/UserHomePageBean.java
  14. 45 0
      app/src/main/java/com/electric/chargingpile/data/UserPageBeanLab.java
  15. 二進制
      app/src/main/res/drawable-hdpi/user_page_bg.png
  16. 二進制
      app/src/main/res/drawable-mdpi/user_page_bg.png
  17. 二進制
      app/src/main/res/drawable-xhdpi/user_page_bg.png
  18. 二進制
      app/src/main/res/drawable-xxhdpi/user_page_bg.png
  19. 二進制
      app/src/main/res/drawable-xxxhdpi/user_page_bg.png
  20. 5 5
      app/src/main/res/layout/activity_no_net.xml
  21. 206 3
      app/src/main/res/layout/activity_user_page.xml

+ 11 - 11
app/src/main/java/com/electric/chargingpile/activity/PersonalPageActivity.java

@ -20,7 +20,7 @@ import com.electric.chargingpile.R;
20 20
import com.electric.chargingpile.adapter.WaterFallAdapter;
21 21
import com.electric.chargingpile.application.MainApplication;
22 22
import com.electric.chargingpile.data.ChargingShareBean;
23
import com.electric.chargingpile.data.HomePageBean;
23
import com.electric.chargingpile.data.TopicHomePageBean;
24 24
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
25 25
import com.electric.chargingpile.util.BarColorUtil;
26 26
import com.electric.chargingpile.util.JsonUtils;
@ -74,8 +74,8 @@ public class PersonalPageActivity extends Activity implements View.OnClickListen
74 74
        if (NetUtil.CheckNetwork(this)) {
75 75
            requestData();
76 76
        } else {
77
            findViewById(R.id.no_net_view).setVisibility(View.VISIBLE);
78
            findViewById(R.id.request_refresh).setOnClickListener(this);
77
            findViewById(R.id.noNetView).setVisibility(View.VISIBLE);
78
            findViewById(R.id.noNetTry).setOnClickListener(this);
79 79
        }
80 80
    }
81 81
@ -119,7 +119,7 @@ public class PersonalPageActivity extends Activity implements View.OnClickListen
119 119
                String rtnCode = JsonUtils.getKeyResult(response, "code");
120 120
                if ("1000".equals(rtnCode)) {
121 121
                    String rtnMsg = JsonUtils.getKeyResult(response, "data");
122
                    HomePageBean qadata = (HomePageBean) JsonUtils.parseToObjectBean(rtnMsg, HomePageBean.class);
122
                    TopicHomePageBean qadata = (TopicHomePageBean) JsonUtils.parseToObjectBean(rtnMsg, TopicHomePageBean.class);
123 123
                    if (!haveLoadHeaderData) {
124 124
                        haveLoadHeaderData = true;
125 125
                        initHeaderData(qadata);
@ -132,12 +132,12 @@ public class PersonalPageActivity extends Activity implements View.OnClickListen
132 132
133 133
                    if ((page == 1 && null == qadata.list) || (page == 1 && qadata.list.size() == 0)) {
134 134
135
                        findViewById(R.id.no_net_view).setVisibility(View.VISIBLE);
136
                        findViewById(R.id.request_refresh).setVisibility(View.GONE);
135
                        findViewById(R.id.noNetView).setVisibility(View.VISIBLE);
136
                        findViewById(R.id.noNetTry).setVisibility(View.GONE);
137 137
                        banquan.setText("快来分享吧\n" +
138 138
                                "小主大家都很期待你的精彩内容哦");
139 139
                    } else {
140
                        findViewById(R.id.no_net_view).setVisibility(View.GONE);
140
                        findViewById(R.id.noNetView).setVisibility(View.GONE);
141 141
                    }
142 142
                } else if ("02".equals(rtnCode)) {
143 143
                    ToastUtil.showToast(getApplicationContext(), "已经全部加载完毕", Toast.LENGTH_SHORT);
@ -147,7 +147,7 @@ public class PersonalPageActivity extends Activity implements View.OnClickListen
147 147
    }
148 148
149 149
    // TODO by hyg
150
    private void initHeaderData(HomePageBean qadata) {
150
    private void initHeaderData(TopicHomePageBean qadata) {
151 151
//        if(qadata == null || qadata.topicBean == null)
152 152
//            return;
153 153
@ -247,9 +247,9 @@ public class PersonalPageActivity extends Activity implements View.OnClickListen
247 247
            case R.id.iv_back:
248 248
                finish();
249 249
                break;
250
            case R.id.request_refresh:
250
            case R.id.noNetTry:
251 251
                if (NetUtil.CheckNetwork(this)) {
252
                    findViewById(R.id.no_net_view).setVisibility(View.GONE);
252
                    findViewById(R.id.noNetView).setVisibility(View.GONE);
253 253
                    requestData();
254 254
                }
255 255
                break;
@ -307,7 +307,7 @@ public class PersonalPageActivity extends Activity implements View.OnClickListen
307 307
                String rtnCode = JsonUtils.getKeyResult(response, "code");
308 308
                if ("1000".equals(rtnCode)) {
309 309
                    String rtnMsg = JsonUtils.getKeyResult(response, "data");
310
                    HomePageBean qadata = (HomePageBean) JsonUtils.parseToObjectBean(rtnMsg, HomePageBean.class);
310
                    TopicHomePageBean qadata = (TopicHomePageBean) JsonUtils.parseToObjectBean(rtnMsg, TopicHomePageBean.class);
311 311
312 312
                }
313 313
            }

+ 0 - 4
app/src/main/java/com/electric/chargingpile/activity/PublishPicTopicActivity.java

@ -49,14 +49,10 @@ import android.widget.RelativeLayout;
49 49
import android.widget.TextView;
50 50
import android.widget.Toast;
51 51
52
import com.blankj.utilcode.util.LogUtils;
53
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
54 52
import com.electric.chargingpile.R;
55 53
import com.electric.chargingpile.application.MainApplication;
56 54
import com.electric.chargingpile.data.AuthSignBean;
57 55
import com.electric.chargingpile.data.ChatRecommendBean;
58
import com.electric.chargingpile.data.HomePageBean;
59
import com.electric.chargingpile.data.TalkRecommendBean;
60 56
import com.electric.chargingpile.data.UploadPic;
61 57
import com.electric.chargingpile.manager.ProfileManager;
62 58
import com.electric.chargingpile.util.BarColorUtil;

+ 2 - 2
app/src/main/java/com/electric/chargingpile/activity/TopicDetailActivity.java

@ -18,7 +18,7 @@ import com.electric.chargingpile.R;
18 18
import com.electric.chargingpile.adapter.TopicDetailAdapter;
19 19
import com.electric.chargingpile.application.MainApplication;
20 20
import com.electric.chargingpile.data.ChatRecommendBean;
21
import com.electric.chargingpile.data.HomePageBean;
21
import com.electric.chargingpile.data.TopicHomePageBean;
22 22
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
23 23
import com.electric.chargingpile.manager.ProfileManager;
24 24
import com.electric.chargingpile.util.CommonParams;
@ -254,7 +254,7 @@ public class TopicDetailActivity extends AppCompatActivity implements View.OnCli
254 254
                String desc = JsonUtils.getKeyResult(res, "desc");
255 255
                if ("1000".equals(code)) {
256 256
                    String data = JsonUtils.getKeyResult(res, "data");
257
                    HomePageBean homePageBean = (HomePageBean) JsonUtils.parseToObjectBean(data, HomePageBean.class);
257
                    TopicHomePageBean homePageBean = (TopicHomePageBean) JsonUtils.parseToObjectBean(data, TopicHomePageBean.class);
258 258
                    if (page == 1) {
259 259
                        xRefreshView.stopRefresh();
260 260
                        xRefreshView.setLoadComplete(false);

+ 7 - 7
app/src/main/java/com/electric/chargingpile/activity/TopicSearchListsActivity.java

@ -20,7 +20,7 @@ import com.electric.chargingpile.R;
20 20
import com.electric.chargingpile.adapter.SearchQuestionAdapter;
21 21
import com.electric.chargingpile.adapter.SearchTopicListAdapter;
22 22
import com.electric.chargingpile.application.MainApplication;
23
import com.electric.chargingpile.data.HomePageBean;
23
import com.electric.chargingpile.data.TopicHomePageBean;
24 24
import com.electric.chargingpile.data.MyQSearch;
25 25
import com.electric.chargingpile.data.QAData;
26 26
import com.electric.chargingpile.data.TextSearch;
@ -177,12 +177,12 @@ public class TopicSearchListsActivity extends AppCompatActivity implements View.
177 177
178 178
                    if((page == 1 && null == qadata) || (page == 1 && qadata.size() == 0)){
179 179
180
                        findViewById(R.id.no_net_view).setVisibility(View.VISIBLE);
181
                        findViewById(R.id.request_refresh).setVisibility(View.GONE);
180
                        findViewById(R.id.noNetView).setVisibility(View.VISIBLE);
181
                        findViewById(R.id.noNetTry).setVisibility(View.GONE);
182 182
                        banquan.setText("还没有任何内容哦," +
183 183
                                "快来抢沙发~");
184 184
                    }else {
185
                        findViewById(R.id.no_net_view).setVisibility(View.GONE);
185
                        findViewById(R.id.noNetView).setVisibility(View.GONE);
186 186
                    }
187 187
                } else if ("02".equals(rtnCode)) {
188 188
                    ToastUtil.showToast(getApplicationContext(), "已经全部加载完毕", Toast.LENGTH_SHORT);
@ -194,7 +194,7 @@ public class TopicSearchListsActivity extends AppCompatActivity implements View.
194 194
    @Override
195 195
    public void onClick(View v) {
196 196
        switch (v.getId()) {
197
            case R.id.request_refresh:
197
            case R.id.noNetTry:
198 198
            case R.id.search_icon:
199 199
                requestData();
200 200
                break;
@ -217,8 +217,8 @@ public class TopicSearchListsActivity extends AppCompatActivity implements View.
217 217
            if(NetUtil.CheckNetwork(this)){
218 218
                getSearchData(text);
219 219
            }else {
220
                findViewById(R.id.no_net_view).setVisibility(View.VISIBLE);
221
                findViewById(R.id.request_refresh).setOnClickListener(this);
220
                findViewById(R.id.noNetView).setVisibility(View.VISIBLE);
221
                findViewById(R.id.noNetTry).setOnClickListener(this);
222 222
            }
223 223
        }
224 224
    }

+ 2 - 1
app/src/main/java/com/electric/chargingpile/activity/UserCenterActivity.java

@ -716,8 +716,9 @@ public class UserCenterActivity extends Activity implements View.OnClickListener
716 716
                @Override
717 717
                public void onClick(View v) {
718 718
                    MobclickAgent.onEvent(getApplicationContext(), "0802");
719
                    startActivity(new Intent(getApplicationContext(), PersonalPageActivity.class));
719
//                    startActivity(new Intent(getApplicationContext(), PersonalPageActivity.class));
720 720
//                    startActivity(new Intent(getApplicationContext(), UserInfoActivity.class));
721
                    startActivity(new Intent(getApplicationContext(), UserPageActivity.class));
721 722
                }
722 723
            });
723 724
            ll_userLogin.setVisibility(View.INVISIBLE);

+ 275 - 1
app/src/main/java/com/electric/chargingpile/activity/UserPageActivity.java

@ -1,15 +1,289 @@
1 1
package com.electric.chargingpile.activity;
2 2
3
import android.content.Intent;
4
import android.graphics.Bitmap;
5
import android.graphics.drawable.Drawable;
6
import android.support.constraint.ConstraintLayout;
3 7
import android.support.v7.app.AppCompatActivity;
4 8
import android.os.Bundle;
9
import android.support.v7.widget.RecyclerView;
10
import android.support.v7.widget.StaggeredGridLayoutManager;
11
import android.text.TextUtils;
12
import android.util.Log;
13
import android.view.View;
14
import android.widget.ImageView;
15
import android.widget.RelativeLayout;
16
import android.widget.TextView;
17
import android.widget.Toast;
5 18
19
import com.andview.refreshview.XRefreshView;
6 20
import com.electric.chargingpile.R;
21
import com.electric.chargingpile.adapter.TopicDetailAdapter;
22
import com.electric.chargingpile.adapter.UserPageAdapter;
23
import com.electric.chargingpile.application.MainApplication;
24
import com.electric.chargingpile.data.UserHomePageBean;
25
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
26
import com.electric.chargingpile.util.CommonParams;
27
import com.electric.chargingpile.util.JsonUtils;
28
import com.electric.chargingpile.util.LoadingDialog;
29
import com.electric.chargingpile.util.NetUtil;
30
import com.electric.chargingpile.util.OkHttpUtil;
31
import com.electric.chargingpile.util.ToastUtil;
32
import com.squareup.picasso.Picasso;
33
import com.squareup.picasso.Target;
34
import com.umeng.analytics.MobclickAgent;
35
import com.zhy.http.okhttp.OkHttpUtils;
36
import com.zhy.http.okhttp.callback.StringCallback;
37
38
import java.util.HashMap;
39
import java.util.Map;
40
41
import okhttp3.Call;
42
43
public class UserPageActivity extends AppCompatActivity implements View.OnClickListener {
44
    private static final String TAG = "UserPageActivity";
45
    private boolean fromUserCenter = false;
46
    private LoadingDialog loadingDialog;
47
    private String targetUserId;
48
    private ImageView userHead;
49
    private RelativeLayout noNetView;
50
    private TextView noNetTry;
51
    private int page = 1;
52
53
    private UserHomePageBean userHomePageBean;
54
    private XRefreshView xRefreshView;
55
    private RecyclerView recyclerView;
56
    private ConstraintLayout userEdit;
57
58
    private UserHomePageBean.UserVo userVo;
59
    private TextView nickName;
60
    private TextView carName;
61
    private StaggeredGridLayoutManager staggeredGridLayoutManager;
62
    private UserPageAdapter userPageAdapter;
63
    private ConstraintLayout zeroTopicNum;
7 64
8
public class UserPageActivity extends AppCompatActivity {
9 65
10 66
    @Override
11 67
    protected void onCreate(Bundle savedInstanceState) {
12 68
        super.onCreate(savedInstanceState);
13 69
        setContentView(R.layout.activity_user_page);
70
        initView();
71
        initListener();
72
    }
73
74
    private void initView() {
75
        loadingDialog = new LoadingDialog(UserPageActivity.this);
76
        loadingDialog.setCanceledOnTouchOutside(false);
77
78
        targetUserId = getIntent().getStringExtra("targetUserId");
79
        if (TextUtils.isEmpty(targetUserId)) {
80
            fromUserCenter = true;
81
        } else {
82
            fromUserCenter = false;
83
        }
84
        userHead = findViewById(R.id.userHead);
85
        userEdit = findViewById(R.id.userEdit);
86
        nickName = findViewById(R.id.nickName);
87
        carName = findViewById(R.id.carName);
88
        if (fromUserCenter) {
89
            userEdit.setVisibility(View.VISIBLE);
90
        } else {
91
            userEdit.setVisibility(View.GONE);
92
        }
93
        noNetView = findViewById(R.id.noNetView);
94
        noNetTry = findViewById(R.id.noNetTry);
95
        zeroTopicNum = findViewById(R.id.zeroTopicNum);
96
97
98
        if (NetUtil.CheckNetwork(this)) {
99
            noNetView.setVisibility(View.GONE);
100
            loadingDialog.show();
101
            page = 1;
102
            requestData();
103
        } else {
104
            noNetView.setVisibility(View.VISIBLE);
105
        }
106
107
        xRefreshView = findViewById(R.id.xRefreshView);
108
        xRefreshView.setPullLoadEnable(true); // 允许加载更多
109
        xRefreshView.setPinnedTime(0);
110
        xRefreshView.setMoveForHorizontal(true);
111
        xRefreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener() {
112
            @Override
113
            public void onRefresh(boolean isPullDown) {
114
                super.onRefresh(isPullDown);
115
                page = 1;
116
                requestData();
117
            }
118
119
            @Override
120
            public void onLoadMore(boolean isSilence) {
121
                super.onLoadMore(isSilence);
122
                page++;
123
                requestData();
124
            }
125
        });
126
127
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
128
        staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
129
        userPageAdapter = new UserPageAdapter(getApplicationContext(), UserPageActivity.this);
130
131
        recyclerView = findViewById(R.id.recyclerView);
132
        recyclerView.setHasFixedSize(true);
133
        recyclerView.setItemAnimator(null);
134
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
135
        recyclerView.setAdapter(userPageAdapter);
136
        recyclerView.addItemDecoration(new TopicDetailAdapter.ContentViewDecoration());
137
138
    }
139
140
    private void initListener() {
141
        findViewById(R.id.backPress).setOnClickListener(this);
142
        findViewById(R.id.morePress).setOnClickListener(this);
143
        noNetTry.setOnClickListener(this);
144
        userEdit.setOnClickListener(this);
145
    }
146
147
    @Override
148
    protected void onPostResume() {
149
        super.onPostResume();
150
        if (fromUserCenter) {
151
            if (!"".equals(MainApplication.userIcon)) {
152
                Picasso.with(UserPageActivity.this)
153
                        .load(MainApplication.userIcon)
154
                        .placeholder(R.drawable.icon_face2_0)
155
                        .error(R.drawable.icon_face2_0)
156
                        .into(userHead);
157
            } else {
158
                userHead.setImageResource(R.drawable.icon_face2_0);
159
            }
160
        }
161
    }
162
163
    @Override
164
    public void onClick(View view) {
165
        switch (view.getId()) {
166
            case R.id.backPress:
167
                finish();
168
                break;
169
            case R.id.morePress:
170
                if (!NetUtil.CheckNetwork(this)) {
171
                    noNetView.setVisibility(View.VISIBLE);
172
                    ToastUtil.showToast(UserPageActivity.this, "小主网络跑掉了,请检查网络~", Toast.LENGTH_SHORT);
173
                    return;
174
                }
175
176
                if (userHomePageBean == null) {
177
                    page = 1;
178
                    loadingDialog.show();
179
                    requestData();
180
                }
181
                break;
182
            case R.id.noNetTry:
183
                page = 1;
184
                loadingDialog.show();
185
                requestData();
186
                break;
187
            case R.id.userEdit:
188
                MobclickAgent.onEvent(getApplicationContext(), "0802");
189
                startActivity(new Intent(getApplicationContext(), UserInfoActivity.class));
190
                break;
191
        }
192
    }
193
194
    private void requestData() {
195
        String url = MainApplication.urlNew + "/user/homepage.do";
196
        Map<String, String> map = new HashMap<>();
197
        map.put("page", page + "");
198
        map.put("limit", "20");
199
200
        if (fromUserCenter) {
201
            map.put("targetUserId", MainApplication.userId); // 说明是自己
202
        } else {
203
            map.put("targetUserId", targetUserId);
204
        }
205
206
        CommonParams.addCommonParams(map);
207
        OkHttpUtils.get().url(url).params(map).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() {
208
            @Override
209
            public void onError(Call call, Exception e) {
210
                loadingDialog.dismiss();
211
                if (page == 1) {
212
                    xRefreshView.stopRefresh();
213
                } else {
214
                    page--;
215
                    xRefreshView.stopLoadMore();
216
                }
217
                ToastUtil.showToast(UserPageActivity.this, "加载失败,请重试", Toast.LENGTH_SHORT);
218
            }
219
220
            @Override
221
            public void onResponse(String s) {
222
                loadingDialog.dismiss();
223
                if (page == 1) {
224
                    xRefreshView.stopRefresh();
225
                } else {
226
                    xRefreshView.stopLoadMore();
227
                }
228
229
                String code = JsonUtils.getKeyResult(s, "code");
230
                if ("1000".equals(code)) {
231
                    String data = JsonUtils.getKeyResult(s, "data");
232
                    UserHomePageBean userHomePageBean = (UserHomePageBean) JsonUtils.parseToObjectBean(data, UserHomePageBean.class);
233
                    if (page == 1) {
234
                        xRefreshView.setLoadComplete(false);
235
                        userVo = userHomePageBean.userVo;
236
                        updateTopView();
237
                        if (userHomePageBean.list.size() == 0) {
238
                            zeroTopicNum.setVisibility(View.VISIBLE);
239
                        } else {
240
                            zeroTopicNum.setVisibility(View.GONE);
241
                            userPageAdapter.setContentData(userHomePageBean.list);
242
                        }
243
                        userPageAdapter.setFooterData(false);
244
                    } else {
245
                        if (userHomePageBean.list.size() == 0) {
246
                            xRefreshView.setLoadComplete(true);
247
                            userPageAdapter.setFooterData(true);
248
                        } else {
249
                            userPageAdapter.addContentData(userHomePageBean.list);
250
                        }
251
                    }
252
                } else {
253
                    String desc = JsonUtils.getKeyResult(s, "desc");
254
                    ToastUtil.showToast(UserPageActivity.this, desc, Toast.LENGTH_SHORT);
255
                }
256
257
            }
258
        });
259
    }
260
261
    private void updateTopView() {
262
        if (TextUtils.isEmpty(userVo.headImgUrl)) {
263
            userHead.setImageResource(R.drawable.icon_face2_0);
264
        } else {
265
            Picasso.with(this).load("http://cdz.evcharge.cc/zhannew/uploadfile/" + userVo.headImgUrl).into(new Target() {
266
                @Override
267
                public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
268
                    userHead.setImageBitmap(bitmap);
269
                }
270
271
                @Override
272
                public void onBitmapFailed(Drawable drawable) {
273
                    userHead.setImageResource(R.drawable.icon_face2_0);
274
                }
275
276
                @Override
277
                public void onPrepareLoad(Drawable drawable) {
278
                }
279
            });
280
        }
281
282
        nickName.setText(userVo.nickName);
283
        if (TextUtils.isEmpty(userVo.carName)) {
284
            carName.setText("");
285
        } else {
286
            carName.setText(userVo.carName);
287
        }
14 288
    }
15 289
}

+ 12 - 12
app/src/main/java/com/electric/chargingpile/adapter/TopicDetailAdapter.java

@ -18,7 +18,7 @@ import com.aspsine.irecyclerview.IViewHolder;
18 18
import com.electric.chargingpile.R;
19 19
import com.electric.chargingpile.application.MainApplication;
20 20
import com.electric.chargingpile.data.ChatRecommendBean;
21
import com.electric.chargingpile.data.HomePageBean;
21
import com.electric.chargingpile.data.TopicHomePageBean;
22 22
import com.electric.chargingpile.data.TopicDetailBeanLab;
23 23
import com.electric.chargingpile.iview.RecyclerItemTypeClickListener;
24 24
import com.electric.chargingpile.util.CircleTransform;
@ -52,7 +52,7 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
52 52
    private Activity activity;
53 53
    private LayoutInflater layoutInflater;
54 54
    private final TopicDetailBeanLab beanLab;
55
    private HomePageBean.HomePageTopicBean topicDetailBean;
55
    private TopicHomePageBean.TopicVo topicVo;
56 56
    private RecyclerItemTypeClickListener onRecyclerItemClickListener;
57 57
    private ChooseTopicSortInterface chooseTopicSortInterface;
58 58
    private final int screenWidth;
@ -131,15 +131,15 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
131 131
        final HeaderViewHolder headerViewHolder = (HeaderViewHolder) viewHolder;
132 132
        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) headerViewHolder.topicDetailHeader.getLayoutParams();
133 133
        params.setFullSpan(true);
134
        if (topicDetailBean == null) {
134
        if (topicVo == null) {
135 135
            return;
136 136
        }
137 137
138
        ImageDisplayUtils.dispalyImg(context, topicDetailBean.coverImgUrl, headerViewHolder.headImage);
139
        headerViewHolder.name.setText(topicDetailBean.name);
140
        headerViewHolder.desc.setText(topicDetailBean.desc);
141
        headerViewHolder.read.setText(topicDetailBean.visitNums);
142
        headerViewHolder.join.setText(topicDetailBean.joinNums);
138
        ImageDisplayUtils.dispalyImg(context, topicVo.coverImgUrl, headerViewHolder.headImage);
139
        headerViewHolder.name.setText(topicVo.name);
140
        headerViewHolder.desc.setText(topicVo.desc);
141
        headerViewHolder.read.setText(topicVo.visitNums);
142
        headerViewHolder.join.setText(topicVo.joinNums);
143 143
144 144
        headerViewHolder.sortConstrainLayout.setOnClickListener(new View.OnClickListener() {
145 145
            @Override
@ -327,8 +327,8 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
327 327
        notifyItemRangeChanged(startSize, beans.size());
328 328
    }
329 329
330
    public void setHeaderData(HomePageBean.HomePageTopicBean bean) {
331
        topicDetailBean = bean;
330
    public void setHeaderData(TopicHomePageBean.TopicVo bean) {
331
        topicVo = bean;
332 332
    }
333 333
334 334
    public void setFooterData(Boolean showFooter) {
@ -371,7 +371,7 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
371 371
        }
372 372
    }
373 373
374
    public class ContentViewHolder extends IViewHolder {
374
    public static class ContentViewHolder extends IViewHolder {
375 375
376 376
        ConstraintLayout image_video_item;
377 377
        ImageView coverImage;
@ -412,7 +412,7 @@ public class TopicDetailAdapter extends RecyclerView.Adapter<IViewHolder> {
412 412
        }
413 413
    }
414 414
415
    public class FooterViewHolder extends IViewHolder {
415
    public static class FooterViewHolder extends IViewHolder {
416 416
417 417
        ConstraintLayout footerContainer;
418 418
        ConstraintLayout footerView;

+ 257 - 0
app/src/main/java/com/electric/chargingpile/adapter/UserPageAdapter.java

@ -0,0 +1,257 @@
1
package com.electric.chargingpile.adapter;
2
3
import android.app.Activity;
4
import android.content.Context;
5
import android.support.constraint.ConstraintLayout;
6
import android.support.v7.widget.RecyclerView;
7
import android.support.v7.widget.StaggeredGridLayoutManager;
8
import android.text.TextUtils;
9
import android.view.LayoutInflater;
10
import android.view.View;
11
import android.view.ViewGroup;
12
import android.widget.Toast;
13
14
import com.aspsine.irecyclerview.IViewHolder;
15
import com.electric.chargingpile.R;
16
import com.electric.chargingpile.activity.TopicDetailActivity;
17
import com.electric.chargingpile.application.MainApplication;
18
import com.electric.chargingpile.data.ChatRecommendBean;
19
import com.electric.chargingpile.data.TopicDetailBeanLab;
20
import com.electric.chargingpile.data.TopicHomePageBean;
21
import com.electric.chargingpile.data.UserPageBeanLab;
22
import com.electric.chargingpile.util.CircleTransform;
23
import com.electric.chargingpile.util.CommonParams;
24
import com.electric.chargingpile.util.DensityUtil;
25
import com.electric.chargingpile.util.ImageDisplayUtils;
26
import com.electric.chargingpile.util.JsonUtils;
27
import com.electric.chargingpile.util.ScreenUtils;
28
import com.electric.chargingpile.util.ToastUtil;
29
import com.squareup.picasso.Picasso;
30
import com.zhy.http.okhttp.OkHttpUtils;
31
import com.zhy.http.okhttp.callback.StringCallback;
32
33
import java.util.ArrayList;
34
import java.util.HashMap;
35
import java.util.List;
36
import java.util.Map;
37
38
import okhttp3.Call;
39
40
public class UserPageAdapter extends RecyclerView.Adapter<IViewHolder> {
41
    private static final String TAG = "UserPageAdapter";
42
    public static final int TOPIC_DETAIL_HEADER = 1;
43
    public static final int TOPIC_DETAIL_CONTENT = 2;
44
    public static final int TOPIC_DETAIL_FOOTER = 3;
45
    private Context context;
46
    private Activity activity;
47
    private LayoutInflater layoutInflater;
48
    private final int screenWidth;
49
    private final int screenHeight;
50
    private final int statusHeight;
51
    private final int headerHeight;
52
    private final int itemWidth;
53
    private final UserPageBeanLab beanLab;
54
    private boolean showFooter = false;
55
56
    public UserPageAdapter(Context context, Activity activity) {
57
        this.context = context;
58
        this.activity = activity;
59
        this.layoutInflater = LayoutInflater.from(context);
60
        beanLab = UserPageBeanLab.get(context);
61
62
        screenWidth = ScreenUtils.getScreenWidth(context);
63
        screenHeight = ScreenUtils.getScreenHeight(context);
64
        statusHeight = ScreenUtils.getStatusHeight(context);
65
        headerHeight = DensityUtil.dip2px(context, 260);
66
        itemWidth = (screenWidth - DensityUtil.dip2px(context, 10 * 2)) / 2;
67
    }
68
69
    @Override
70
    public IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
71
        View itemView = null;
72
        IViewHolder viewHolder = null;
73
        switch (viewType) {
74
            case TOPIC_DETAIL_CONTENT:
75
                itemView = layoutInflater.inflate(R.layout.activity_chat_content, parent, false);
76
                viewHolder = new TopicDetailAdapter.ContentViewHolder(itemView);
77
                break;
78
            case TOPIC_DETAIL_FOOTER:
79
                itemView = layoutInflater.inflate(R.layout.activity_chat_footer, parent, false);
80
                viewHolder = new TopicDetailAdapter.FooterViewHolder(itemView);
81
                break;
82
        }
83
        return viewHolder;
84
    }
85
86
    @Override
87
    public void onBindViewHolder(IViewHolder viewHolder, int position) {
88
        switch (getItemViewType(position)) {
89
            case TOPIC_DETAIL_CONTENT:
90
                bindContentViewHolder(viewHolder, position);
91
                break;
92
            case TOPIC_DETAIL_FOOTER:
93
                bindFooterViewHolder(viewHolder, position);
94
                break;
95
        }
96
    }
97
98
    @Override
99
    public int getItemViewType(int position) {
100
        if (position == getItemCount()) {
101
            return TOPIC_DETAIL_FOOTER;
102
        }  else {
103
            return TOPIC_DETAIL_CONTENT;
104
        }
105
    }
106
107
    @Override
108
    public int getItemCount() {
109
        return beanLab.beans().size() + 1;
110
    }
111
112
113
    private void bindContentViewHolder(IViewHolder viewHolder, final int position) {
114
        if (beanLab.beans().size() == 0 || position >= beanLab.beans().size()) {
115
            return;
116
        }
117
118
        final ChatRecommendBean bean = beanLab.beans().get(position);
119
        TopicDetailAdapter.ContentViewHolder contentViewHolder = (TopicDetailAdapter.ContentViewHolder) viewHolder;
120
        ConstraintLayout.LayoutParams coverImageParams = (ConstraintLayout.LayoutParams) contentViewHolder.coverImage.getLayoutParams();
121
        coverImageParams.width = itemWidth;
122
123
        if (bean.coverImgW == 0 || bean.coverImgH == 0) {
124
            coverImageParams.height = (int) (itemWidth * 16f / 9f);
125
        } else {
126
            if ((float) bean.coverImgH / bean.coverImgW > 16f / 9f) {
127
                coverImageParams.height = (int) (itemWidth * 16f / 9f);
128
            } else {
129
                coverImageParams.height = (int) ((float) itemWidth * bean.coverImgH / bean.coverImgW);
130
            }
131
        }
132
        contentViewHolder.coverImage.setLayoutParams(coverImageParams);
133
        ImageDisplayUtils.dispalyImg(context, bean.coverImgUrl, contentViewHolder.coverImage);
134
135
        contentViewHolder.videoIcon.setVisibility(bean.targetType == ChatRecommendBean.TARGET_TYPE_VIDEO ? View.VISIBLE : View.GONE);
136
        contentViewHolder.isTop.setVisibility(bean.isTop == 1 ? View.VISIBLE : View.GONE);
137
        contentViewHolder.title.setText(bean.title);
138
        if (TextUtils.isEmpty(bean.headImgUrl)) {
139
            Picasso.with(context)
140
                    .load(R.drawable.icon_face2_0)
141
                    .placeholder(R.drawable.icon_face2_0)
142
                    .error(R.drawable.icon_face2_0)
143
                    .transform(new CircleTransform())
144
                    .into(contentViewHolder.headImage);
145
        } else {
146
            Picasso.with(context)
147
                    .load("http://cdz.evcharge.cc/zhannew/uploadfile/" + bean.headImgUrl)
148
                    .placeholder(R.drawable.icon_face2_0)
149
                    .error(R.drawable.icon_face2_0)
150
                    .transform(new CircleTransform())
151
                    .into(contentViewHolder.headImage);
152
        }
153
154
        contentViewHolder.nickName.setText(bean.nickName);
155
        contentViewHolder.likeInfo.setOnClickListener(new View.OnClickListener() {
156
            @Override
157
            public void onClick(View view) {
158
                if (bean.likeFlg == 0) {
159
                    doLike(position);
160
                }
161
            }
162
        });
163
164
        if (bean.likeFlg == 1) {
165
            contentViewHolder.likeIcon.setBackgroundResource(R.drawable.app_talk_main_list_zan_red_icon);
166
        } else {
167
            contentViewHolder.likeIcon.setBackgroundResource(R.drawable.app_talk_main_list_zan_icon);
168
        }
169
170
        int likeNum = bean.likeNums;
171
        if (likeNum > 0) {
172
            contentViewHolder.likeNum.setVisibility(View.VISIBLE);
173
            contentViewHolder.likeNum.setText(likeNum < 999 ? likeNum + "" : "999+");
174
        } else {
175
            contentViewHolder.likeNum.setVisibility(View.GONE);
176
        }
177
    }
178
179
    private void bindFooterViewHolder(IViewHolder viewHolder, int position) {
180
        TopicDetailAdapter.FooterViewHolder footerViewHolder = (TopicDetailAdapter.FooterViewHolder) viewHolder;
181
        StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) footerViewHolder.footerContainer.getLayoutParams();
182
        layoutParams.setFullSpan(true);
183
184
        footerViewHolder.footerContainer.setVisibility(showFooter ? View.VISIBLE : View.GONE);
185
186
        ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) footerViewHolder.footerView.getLayoutParams();
187
        if (TopicDetailBeanLab.get(context).beans().size() == 0) {
188
            footerViewHolder.footTextView.setText("还没有任何内容哦,快来抢沙发~");
189
            params.height = DensityUtil.dip2px(context, (screenHeight - headerHeight - statusHeight) / 4);
190
            params.bottomMargin = 0;
191
        } else {
192
            footerViewHolder.footTextView.setText("已经全部加载完毕");
193
            params.height = DensityUtil.dip2px(context, 20);
194
            params.bottomMargin = DensityUtil.dip2px(context, 10);
195
        }
196
197
        if (showFooter == false) {
198
            params.height = 0;
199
            params.bottomMargin = DensityUtil.dip2px(context, 10);
200
        }
201
202
        footerViewHolder.footTextView.setLayoutParams(params);
203
    }
204
205
    /**
206
     * 点赞操作
207
     *
208
     * @param position
209
     */
210
    private void doLike(final int position) {
211
        final ChatRecommendBean bean = TopicDetailBeanLab.get(context).beans().get(position);
212
        String url = MainApplication.urlNew + "/topic/like.do";
213
        Map<String, String> map = new HashMap<>();
214
        map.put("targetId", bean.targetId + "");
215
        map.put("targetType", bean.targetType + "");
216
        map.put("flag", "1");
217
        map.put("authorId", bean.addUserId + "");
218
        CommonParams.addCommonParams(map);
219
220
        OkHttpUtils.get().url(url).params(map).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() {
221
            @Override
222
            public void onError(Call call, Exception e) {
223
                ToastUtil.showToast(context, "点赞失败,请重试", Toast.LENGTH_SHORT);
224
            }
225
226
            @Override
227
            public void onResponse(String res) {
228
                String code = JsonUtils.getKeyResult(res, "code");
229
                String desc = JsonUtils.getKeyResult(res, "desc");
230
                if ("1000".equals(code)) {
231
                    bean.likeFlg = 1;
232
                    bean.likeNums += 1;
233
                    notifyItemChanged(position);
234
                } else {
235
                    ToastUtil.showToast(context, desc, Toast.LENGTH_SHORT);
236
                }
237
            }
238
        });
239
    }
240
241
    public void setContentData(ArrayList<ChatRecommendBean> beans) {
242
        beanLab.clear();
243
        beanLab.add(beans);
244
        notifyDataSetChanged();
245
    }
246
247
    public void addContentData(ArrayList<ChatRecommendBean> beans) {
248
        int startSize = beanLab.beans().size();
249
        beanLab.add(beans);
250
        notifyItemRangeChanged(startSize, beans.size());
251
    }
252
253
    public void setFooterData(Boolean showFooter) {
254
        this.showFooter = showFooter;
255
        notifyItemRangeChanged(getItemCount(), 1);
256
    }
257
}

+ 4 - 4
app/src/main/java/com/electric/chargingpile/application/MainApplication.java

@ -73,10 +73,10 @@ public class MainApplication extends MultiDexApplication {
73 73
    public static String firstPoint = "";
74 74
    public static Boolean firstSsyd;
75 75
    public static String password = "";
76
    public static String url = "http://59.110.68.162";// 充电桩测试环境
77
//    public static String url = "http://cdz.evcharge.cc";// 充电桩正式环境
78
    public static String urlNew = "http://123.56.67.7:83/api/0200";// 一电测试环境
79
//    public static String urlNew = "https://api.touchev.com:83/api/0200";// 一电正式环境
76
//    public static String url = "http://59.110.68.162";// 充电桩测试环境
77
    public static String url = "http://cdz.evcharge.cc";// 充电桩正式环境
78
//    public static String urlNew = "http://123.56.67.7:83/api/0200";// 一电测试环境
79
    public static String urlNew = "https://api.touchev.com:83/api/0200";// 一电正式环境
80 80
    public static String pic_url = "http:/s/cdz.evcharge.cc/zhannew/uploadfile/";
81 81
    //	public static String url = "https://cdz.d1ev.com";
82 82
    public static String build_flag = "0";

+ 4 - 4
app/src/main/java/com/electric/chargingpile/data/TopicDetailBeanLab.java

@ -6,15 +6,15 @@ import java.util.ArrayList;
6 6
import java.util.List;
7 7
8 8
public class TopicDetailBeanLab {
9
    private static TopicDetailBeanLab topicDetailBeanLab;
9
    private static TopicDetailBeanLab beanLab;
10 10
    private List<ChatRecommendBean> beans;
11 11
12 12
    public static TopicDetailBeanLab get(Context context) {
13
        if (topicDetailBeanLab == null) {
14
            topicDetailBeanLab = new TopicDetailBeanLab(context);
13
        if (beanLab == null) {
14
            beanLab = new TopicDetailBeanLab(context);
15 15
        }
16 16
17
        return topicDetailBeanLab;
17
        return beanLab;
18 18
    }
19 19
20 20
    private TopicDetailBeanLab(Context context) {

+ 0 - 41
app/src/main/java/com/electric/chargingpile/data/TopicDetailsListBean.java

@ -1,41 +0,0 @@
1
package com.electric.chargingpile.data;
2
3
public class TopicDetailsListBean {
4
//     "targetId": 13,
5
//             "targetType": 24,
6
//             "title": "早上好。    周五啦,再坚持一天就可以迎来美好的周末了。现在照例先奉上虎嗅早报。    昨晚王兴和阿里的口水仗很是精彩了,不过除了怼阿里,王兴在采访中还说了啥?",
7
//             "topicId": 1,
8
//             "topicName": "你的电动车冬天续航有多少公里?你的电动车冬天续航有多少公里?你的",
9
//             "addUserId": 130690,
10
//             "addTime": 1553823519000,
11
//             "imgUrls": [
12
//             "http://cdn-fs.touchev.com/d/file/liaoliao/img/2019/4/
13
//             "http://cdn-fs.touchev.com/d/file/cars/tuji/117/44/100/1/white9.JPG!w480"
14
//             ],
15
//             "coverImgUrl": "http://cdn-fs.touchev.com/d/file/liaoliao/img/2019/4/02/201915541933276282091.jpeg!w480",
16
//             "headImgUrl": "2018/1381545893914photoIOS.png",
17
//             "nickName": "千秋壹胡",
18
//             "likeNums": 0,
19
//             "commentNums": 0,
20
//             "isTop": 1,
21
//             "likeFlg": 0,
22
//             "source": 2,
23
//             "shareUrl": "https://m.d1ev.com/app.html"
24
    public long targetId;
25
    public int targetType;
26
    public String title;
27
    public int topicId;
28
    public String topicName;
29
    public long addUserId;
30
    public String[] imgUrls;
31
    public String coverImgUrl;
32
    public String headImgUrl;
33
    public String nickName;
34
    public int likeNums;
35
    public int commentNums;
36
    public int isTop;
37
    public int likeFlg;
38
    public int source;
39
    public int shareUrl;
40
41
}

+ 13 - 13
app/src/main/java/com/electric/chargingpile/data/HomePageBean.java

@ -2,36 +2,36 @@ package com.electric.chargingpile.data;
2 2
3 3
import java.util.ArrayList;
4 4
5
public class HomePageBean {
5
public class TopicHomePageBean {
6 6
7 7
8 8
    public ArrayList<ChatRecommendBean> list; // 话题下的内容信息集合
9
    public HomePageTopicBean topicVo;
9
    public TopicVo topicVo;
10 10
11
    public class HomePageTopicBean {
12
        public String topicId; // 话题ID
13
        public String name; // 话题名称
14
        public String coverImgUrl; // 话题封面图片
15
        public String desc; // 话题描述
16
        public String joinNums; // 参与该话题的人数
17
        public String visitNums; // 访问量
11
    public class TopicVo {
12
        public String topicId;      // 话题ID
13
        public String name;         // 话题名称
14
        public String coverImgUrl;  // 话题封面图片
15
        public String desc;         // 话题描述
16
        public String joinNums;     // 参与该话题的人数
17
        public String visitNums;    // 访问量
18 18
19 19
        @Override
20 20
        public String toString() {
21
            return "HomePageTopicBean{" +
21
            return "TopicVo{" +
22 22
                    "topicId='" + topicId + '\'' +
23 23
                    ", name='" + name + '\'' +
24 24
                    ", coverImgUrl='" + coverImgUrl + '\'' +
25 25
                    ", desc='" + desc + '\'' +
26
                    ", joinNums=" + joinNums +
27
                    ", visitNums=" + visitNums +
26
                    ", joinNums='" + joinNums + '\'' +
27
                    ", visitNums='" + visitNums + '\'' +
28 28
                    '}';
29 29
        }
30 30
    }
31 31
32 32
    @Override
33 33
    public String toString() {
34
        return "HomePageBean{" +
34
        return "TopicHomePageBean{" +
35 35
                "list=" + list +
36 36
                ", topicVo=" + topicVo +
37 37
                '}';

+ 38 - 0
app/src/main/java/com/electric/chargingpile/data/UserHomePageBean.java

@ -0,0 +1,38 @@
1
package com.electric.chargingpile.data;
2
3
import java.util.ArrayList;
4
5
public class UserHomePageBean {
6
    public ArrayList<ChatRecommendBean> list;
7
    public UserVo userVo;
8
    public String shareUrl;
9
    public class UserVo {
10
        public long userId;
11
        public String nickName;
12
        public String headImgUrl;
13
        public String carName;
14
        public String phone;
15
        public String topicNums;
16
17
        @Override
18
        public String toString() {
19
            return "UserVo{" +
20
                    "userId=" + userId +
21
                    ", nickName='" + nickName + '\'' +
22
                    ", headImgUrl='" + headImgUrl + '\'' +
23
                    ", carName='" + carName + '\'' +
24
                    ", phone='" + phone + '\'' +
25
                    ", topicNums='" + topicNums + '\'' +
26
                    '}';
27
        }
28
    }
29
30
    @Override
31
    public String toString() {
32
        return "UserHomePageBean{" +
33
                "list=" + list +
34
                ", userVo=" + userVo +
35
                ", shareUrl='" + shareUrl + '\'' +
36
                '}';
37
    }
38
}

+ 45 - 0
app/src/main/java/com/electric/chargingpile/data/UserPageBeanLab.java

@ -0,0 +1,45 @@
1
package com.electric.chargingpile.data;
2
3
import android.content.Context;
4
5
import java.util.ArrayList;
6
import java.util.List;
7
8
public class UserPageBeanLab {
9
    private static UserPageBeanLab beanLab;
10
    private List<ChatRecommendBean> beans;
11
12
    public static UserPageBeanLab get(Context context) {
13
        if (beanLab == null) {
14
            beanLab = new UserPageBeanLab(context);
15
        }
16
17
        return beanLab;
18
    }
19
20
    private UserPageBeanLab(Context context) {
21
        beans = new ArrayList<>();
22
    }
23
24
    public List<ChatRecommendBean> beans() {
25
        return beans;
26
    }
27
28
    public ChatRecommendBean bean(int topicId) {
29
        for (ChatRecommendBean bean : beans) {
30
            if (bean.topicId == topicId) {
31
                return bean;
32
            }
33
        }
34
        return null;
35
    }
36
37
    public void clear() {
38
        beans.clear();
39
    }
40
41
42
    public void add(List<ChatRecommendBean> list) {
43
        beans.addAll(list);
44
    }
45
}

二進制
app/src/main/res/drawable-hdpi/user_page_bg.png


二進制
app/src/main/res/drawable-mdpi/user_page_bg.png


二進制
app/src/main/res/drawable-xhdpi/user_page_bg.png


二進制
app/src/main/res/drawable-xxhdpi/user_page_bg.png


二進制
app/src/main/res/drawable-xxxhdpi/user_page_bg.png


+ 5 - 5
app/src/main/res/layout/activity_no_net.xml

@ -2,11 +2,11 @@
2 2
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 3
    android:layout_width="match_parent"
4 4
    android:layout_height="match_parent"
5
    android:background="@color/white"
6
    android:id="@+id/no_net_view">
5
    android:background="#f4f4f4"
6
    android:id="@+id/noNetView">
7 7

8 8
    <TextView
9
        android:id="@+id/banquan"
9
        android:id="@+id/noNetLabel"
10 10
        android:layout_width="wrap_content"
11 11
        android:layout_height="wrap_content"
12 12
        android:layout_marginTop="130dp"
@ -17,12 +17,12 @@
17 17
        android:textColor="#555555" />
18 18

19 19
    <TextView
20
        android:id="@+id/request_refresh"
20
        android:id="@+id/noNetTry"
21 21
        android:layout_width="144dp"
22 22
        android:layout_height="40dp"
23 23
        android:layout_centerHorizontal="true"
24 24
        android:layout_marginTop="20dp"
25
        android:layout_below="@+id/banquan"
25
        android:layout_below="@+id/noNetLabel"
26 26
        android:text="点击重新尝试"
27 27
        android:gravity="center"
28 28
        android:textSize="14sp"

+ 206 - 3
app/src/main/res/layout/activity_user_page.xml

@ -7,29 +7,232 @@
7 7
    tools:context=".activity.UserPageActivity">
8 8
9 9
    <android.support.constraint.ConstraintLayout
10
        android:id="@+id/topView"
10 11
        android:layout_width="0dp"
11 12
        android:layout_height="174dp"
13
        android:background="#ffffff"
12 14
        app:layout_constraintEnd_toEndOf="parent"
13 15
        app:layout_constraintStart_toStartOf="parent"
14 16
        app:layout_constraintTop_toTopOf="parent">
15 17
16 18
        <ImageView
19
            android:id="@+id/userPageBg"
17 20
            android:layout_width="0dp"
18
            android:layout_height="150dp"
19
            android:background="@drawable/user_page_bg"
21
            android:layout_height="0dp"
22
            android:scaleType="fitXY"
23
            android:src="@drawable/user_page_bg"
24
            app:layout_constraintBottom_toTopOf="@+id/topicNumInfo"
20 25
            app:layout_constraintLeft_toLeftOf="parent"
21 26
            app:layout_constraintRight_toRightOf="parent"
22
            app:layout_constraintTop_toTopOf="parent" />
27
            app:layout_constraintTop_toTopOf="parent"
28
            tools:background="#ff0000" />
23 29
24 30
25 31
        <android.support.constraint.ConstraintLayout
32
            android:id="@+id/navBar"
26 33
            android:layout_width="0dp"
27 34
            android:layout_height="44dp"
28 35
            app:layout_constraintEnd_toEndOf="parent"
29 36
            app:layout_constraintStart_toStartOf="parent"
30 37
            app:layout_constraintTop_toTopOf="parent">
31 38
39
            <ImageView
40
                android:id="@+id/backPress"
41
                android:layout_width="wrap_content"
42
                android:layout_height="match_parent"
43
                android:contentDescription="@null"
44
                android:paddingLeft="15dp"
45
                android:paddingRight="15dp"
46
                android:src="@drawable/app_white_back_icon"
47
                app:layout_constraintBottom_toBottomOf="parent"
48
                app:layout_constraintStart_toStartOf="parent"
49
                app:layout_constraintTop_toTopOf="parent" />
50
51
            <ImageView
52
                android:id="@+id/morePress"
53
                android:layout_width="wrap_content"
54
                android:layout_height="match_parent"
55
                android:contentDescription="@null"
56
                android:paddingLeft="15dp"
57
                android:paddingRight="15dp"
58
                android:src="@drawable/app_header_more_icon"
59
                app:layout_constraintBottom_toBottomOf="parent"
60
                app:layout_constraintEnd_toEndOf="parent"
61
                app:layout_constraintTop_toTopOf="parent" />
62
        </android.support.constraint.ConstraintLayout>
63
64
        <android.support.constraint.ConstraintLayout
65
            android:id="@+id/userInfo"
66
            android:layout_width="0dp"
67
            android:layout_height="64dp"
68
            app:layout_constraintLeft_toLeftOf="parent"
69
            app:layout_constraintRight_toRightOf="parent"
70
            app:layout_constraintTop_toBottomOf="@+id/navBar">
71
72
            <com.electric.chargingpile.view.RoundImageView
73
                android:id="@+id/userHead"
74
                android:layout_width="56dp"
75
                android:layout_height="56dp"
76
                android:layout_gravity="center"
77
                android:layout_marginLeft="16dp"
78
                android:layout_marginTop="4dp"
79
                android:layout_marginBottom="4dp"
80
                android:background="@drawable/icon_user1118"
81
                android:scaleType="fitXY"
82
                app:layout_constraintBottom_toBottomOf="parent"
83
                app:layout_constraintStart_toStartOf="parent"
84
                app:layout_constraintTop_toTopOf="parent"
85
                app:type="circle" />
86
87
            <TextView
88
                android:id="@+id/nickName"
89
                android:layout_width="wrap_content"
90
                android:layout_height="wrap_content"
91
                android:layout_marginLeft="10dp"
92
                android:layout_marginTop="8dp"
93
                android:textColor="#ffffff"
94
                android:textSize="16sp"
95
                app:layout_constraintLeft_toRightOf="@+id/userHead"
96
                app:layout_constraintTop_toTopOf="parent"
97
                tools:text="吉利帝豪车主" />
98
99
            <TextView
100
                android:id="@+id/carName"
101
                android:layout_width="wrap_content"
102
                android:layout_height="wrap_content"
103
                android:layout_marginLeft="10dp"
104
                android:layout_marginTop="2dp"
105
                android:textColor="#ffffff"
106
                android:textSize="12sp"
107
                app:layout_constraintLeft_toRightOf="@+id/userHead"
108
                app:layout_constraintTop_toBottomOf="@+id/nickName"
109
                tools:text="比亚迪 元EV" />
110
111
            <android.support.constraint.ConstraintLayout
112
                android:id="@+id/userEdit"
113
                android:layout_width="90dp"
114
                android:layout_height="match_parent"
115
                android:visibility="gone"
116
                app:layout_constraintBottom_toBottomOf="parent"
117
                app:layout_constraintRight_toRightOf="parent"
118
                app:layout_constraintTop_toTopOf="parent"
119
                tools:visibility="visible">
120
121
                <ImageView
122
                    android:layout_width="wrap_content"
123
                    android:layout_height="wrap_content"
124
                    android:src="@drawable/app_header_edit_icon"
125
                    app:layout_constraintBottom_toBottomOf="parent"
126
                    app:layout_constraintEnd_toEndOf="parent"
127
                    app:layout_constraintStart_toStartOf="parent"
128
                    app:layout_constraintTop_toTopOf="parent" />
129
            </android.support.constraint.ConstraintLayout>
130
131
        </android.support.constraint.ConstraintLayout>
132
133
        <android.support.constraint.ConstraintLayout
134
            android:id="@+id/topicNumInfo"
135
            android:layout_width="0dp"
136
            android:layout_height="44dp"
137
            app:layout_constraintBottom_toBottomOf="parent"
138
            app:layout_constraintLeft_toLeftOf="parent"
139
            app:layout_constraintRight_toRightOf="parent">
140
141
            <android.support.constraint.ConstraintLayout
142
                android:layout_width="wrap_content"
143
                android:layout_height="wrap_content"
144
                app:layout_constraintBottom_toBottomOf="parent"
145
                app:layout_constraintEnd_toEndOf="parent"
146
                app:layout_constraintStart_toStartOf="parent"
147
                app:layout_constraintTop_toTopOf="parent">
148
149
                <TextView
150
                    android:id="@+id/topicNumLabel"
151
                    android:layout_width="wrap_content"
152
                    android:layout_height="wrap_content"
153
                    android:text="帖子"
154
                    android:textColor="#222222"
155
                    android:textSize="16sp"
156
                    app:layout_constraintBottom_toBottomOf="parent"
157
                    app:layout_constraintLeft_toLeftOf="parent"
158
                    app:layout_constraintTop_toTopOf="parent" />
159
160
                <TextView
161
                    android:layout_width="wrap_content"
162
                    android:layout_height="wrap_content"
163
                    android:paddingLeft="5dp"
164
                    android:textColor="#555555"
165
                    android:textSize="14sp"
166
                    app:layout_constraintBottom_toBottomOf="parent"
167
                    app:layout_constraintLeft_toRightOf="@+id/topicNumLabel"
168
                    app:layout_constraintTop_toTopOf="parent"
169
                    tools:text="2345" />
170
            </android.support.constraint.ConstraintLayout>
171
172
            <ImageView
173
                android:layout_width="match_parent"
174
                android:layout_height="1dp"
175
                android:background="#dddddd"
176
                app:layout_constraintBottom_toBottomOf="parent"
177
                app:layout_constraintLeft_toLeftOf="parent"
178
                app:layout_constraintRight_toRightOf="parent" />
32 179
        </android.support.constraint.ConstraintLayout>
33 180
34 181
    </android.support.constraint.ConstraintLayout>
182
183
    <!-- 列表 -->
184
185
    <com.andview.refreshview.XRefreshView
186
        android:id="@+id/xRefreshView"
187
        android:layout_width="0dp"
188
        android:layout_height="0dp"
189
        app:layout_constraintBottom_toBottomOf="parent"
190
        app:layout_constraintLeft_toLeftOf="parent"
191
        app:layout_constraintRight_toRightOf="parent"
192
        app:layout_constraintTop_toBottomOf="@+id/topView">
193
194
        <android.support.v7.widget.RecyclerView
195
            android:id="@+id/recyclerView"
196
            android:layout_width="match_parent"
197
            android:layout_height="match_parent"
198
            android:paddingTop="15dp">
199
200
        </android.support.v7.widget.RecyclerView>
201
    </com.andview.refreshview.XRefreshView>
202
203
    <include
204
        layout="@layout/activity_no_net"
205
        android:layout_width="0dp"
206
        android:layout_height="0dp"
207
        android:visibility="gone"
208
        app:layout_constraintBottom_toBottomOf="parent"
209
        app:layout_constraintLeft_toLeftOf="parent"
210
        app:layout_constraintRight_toRightOf="parent"
211
        app:layout_constraintTop_toBottomOf="@+id/topView" />
212
213
    <android.support.constraint.ConstraintLayout
214
        android:id="@+id/zeroTopicNum"
215
        android:layout_width="0dp"
216
        android:layout_height="0dp"
217
        android:visibility="gone"
218
        app:layout_constraintBottom_toBottomOf="parent"
219
        app:layout_constraintLeft_toLeftOf="parent"
220
        app:layout_constraintRight_toRightOf="parent"
221
        app:layout_constraintTop_toBottomOf="@+id/topView">
222
223
        <TextView
224
            android:layout_width="wrap_content"
225
            android:layout_height="wrap_content"
226
            android:gravity="center"
227
            android:text="快来分享吧\n小主大家都很期待你的精彩内容哦"
228
            android:textColor="#555555"
229
            android:textSize="14sp"
230
            app:layout_constraintBottom_toBottomOf="parent"
231
            app:layout_constraintLeft_toLeftOf="parent"
232
            app:layout_constraintRight_toRightOf="parent"
233
            app:layout_constraintTop_toTopOf="parent"
234
            app:layout_constraintVertical_bias="0.35000002" />
235
236
    </android.support.constraint.ConstraintLayout>
237
35 238
</android.support.constraint.ConstraintLayout>