Commit 4392346d19a241cb26a075536d7e554fecc1c0d5

Authored by 陈硕
2 parents db9c45f0 8729902d

Merge branch 'master' of bj.gitlab.cnlive.com:cnlive-team/CNLiveApp

Showing 26 changed files with 1027 additions and 93 deletions
app/src/main/AndroidManifest.xml
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:tools="http://schemas.android.com/tools" 3 xmlns:tools="http://schemas.android.com/tools"
4 package="com.cnlive.gundam"> 4 package="com.cnlive.gundam">
  5 +
5 <uses-permission android:name="android.permission.BLUETOOTH" /> 6 <uses-permission android:name="android.permission.BLUETOOTH" />
6 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 7 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
7 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 8 <uses-permission android:name="android.permission.GET_ACCOUNTS" />
@@ -54,10 +55,16 @@ @@ -54,10 +55,16 @@
54 android:screenOrientation="portrait" 55 android:screenOrientation="portrait"
55 android:windowSoftInputMode="adjustResize" /> 56 android:windowSoftInputMode="adjustResize" />
56 57
57 - <activity android:name=".user.activity.LoginActivity"/> 58 + <activity
  59 + android:name=".main.ui.activity.WebViewActivity"
  60 + android:configChanges="keyboardHidden|screenSize|orientation"
  61 + android:launchMode="singleTop"
  62 + android:screenOrientation="portrait"
  63 + android:windowSoftInputMode="adjustResize" />
  64 +
  65 + <activity android:name=".user.activity.LoginActivity" />
58 66
59 - <receiver  
60 - android:name=".video.utils.NetworkChangeReceive"> 67 + <receiver android:name=".video.utils.NetworkChangeReceive">
61 <intent-filter> 68 <intent-filter>
62 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 69 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
63 </intent-filter> 70 </intent-filter>
@@ -79,7 +86,6 @@ @@ -79,7 +86,6 @@
79 <activity 86 <activity
80 android:name=".user.activity.UserPersonalActivity" 87 android:name=".user.activity.UserPersonalActivity"
81 android:configChanges="orientation|keyboardHidden|screenSize" 88 android:configChanges="orientation|keyboardHidden|screenSize"
82 - android:launchMode="singleTop"  
83 android:screenOrientation="portrait" 89 android:screenOrientation="portrait"
84 android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> 90 android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
85 </application> 91 </application>
app/src/main/java/com/cnlive/gundam/main/application/CNLiveApplication.java
@@ -13,6 +13,8 @@ public class CNLiveApplication extends Application { @@ -13,6 +13,8 @@ public class CNLiveApplication extends Application {
13 @Override 13 @Override
14 public void onCreate() { 14 public void onCreate() {
15 super.onCreate(); 15 super.onCreate();
16 - Config.init(getApplicationContext(), "60_j4fc7dsm83", "4c8658abc5d66f270f9bf5dcd1ef11e3597fab4c4e0af9",true); 16 + //TODO 测试ID 在正式与测试环境均可通过,正式ID则不行~!
  17 +// Config.init(getApplicationContext(), "60_j4fc7dsm83", "4c8658abc5d66f270f9bf5dcd1ef11e3597fab4c4e0af9",true);
  18 + Config.init(getApplicationContext(), "60_j4faozoq85", "7b6da5a6e2955aaf7f73a06b5bdc6d50e6d5bfda3da86b");
17 } 19 }
18 } 20 }
app/src/main/java/com/cnlive/gundam/main/network/ApiService.java
@@ -3,6 +3,7 @@ package com.cnlive.gundam.main.network; @@ -3,6 +3,7 @@ package com.cnlive.gundam.main.network;
3 import com.cnlive.gundam.main.model.ActiveListModel; 3 import com.cnlive.gundam.main.model.ActiveListModel;
4 import com.cnlive.gundam.main.model.ActivePlayInfo; 4 import com.cnlive.gundam.main.model.ActivePlayInfo;
5 import com.cnlive.gundam.main.model.VodListPage; 5 import com.cnlive.gundam.main.model.VodListPage;
  6 +import com.cnlive.gundam.user.model.ChannelInfoModel;
6 7
7 import java.util.Map; 8 import java.util.Map;
8 9
@@ -27,4 +28,8 @@ public interface ApiService { @@ -27,4 +28,8 @@ public interface ApiService {
27 //判断活动的状态 28 //判断活动的状态
28 @GET("vod_epg/getVodInfo4App") 29 @GET("vod_epg/getVodInfo4App")
29 Call<VodListPage> getVodInfoList(@QueryMap Map<String, String> options); 30 Call<VodListPage> getVodInfoList(@QueryMap Map<String, String> options);
  31 +
  32 + //主播信息接口
  33 + @GET("live_epg/channel/info4App")
  34 + Call<ChannelInfoModel> getChannelInfo(@QueryMap Map<String, String> params);
30 } 35 }
app/src/main/java/com/cnlive/gundam/main/network/util/SignUtil.java
@@ -3,19 +3,13 @@ package com.cnlive.gundam.main.network.util; @@ -3,19 +3,13 @@ package com.cnlive.gundam.main.network.util;
3 import android.content.Context; 3 import android.content.Context;
4 import android.util.Log; 4 import android.util.Log;
5 5
6 -import com.cnlive.gundam.main.network.util.SHA1;  
7 import com.cnlive.libs.util.Config; 6 import com.cnlive.libs.util.Config;
8 -import com.cnlive.libs.util.data.okhttp3.Headers;  
9 -import com.cnlive.libs.util.data.okhttp3.OkHttpClient;  
10 -import com.cnlive.libs.util.data.okhttp3.Request;  
11 -import com.cnlive.libs.util.data.okhttp3.Response;  
12 7
13 import java.io.UnsupportedEncodingException; 8 import java.io.UnsupportedEncodingException;
14 import java.net.URLEncoder; 9 import java.net.URLEncoder;
15 import java.util.ArrayList; 10 import java.util.ArrayList;
16 import java.util.Collections; 11 import java.util.Collections;
17 import java.util.Comparator; 12 import java.util.Comparator;
18 -import java.util.Date;  
19 import java.util.HashMap; 13 import java.util.HashMap;
20 import java.util.LinkedHashMap; 14 import java.util.LinkedHashMap;
21 import java.util.List; 15 import java.util.List;
@@ -66,17 +60,17 @@ public class SignUtil { @@ -66,17 +60,17 @@ public class SignUtil {
66 } 60 }
67 61
68 private static long getTime() { 62 private static long getTime() {
69 - OkHttpClient okHttpClient = new OkHttpClient();  
70 - try {  
71 - Request request = new Request.Builder().url(URL_TIME_SERVICE).build();  
72 - Response response = okHttpClient.newCall(request).execute();  
73 - Headers headers = response.headers();  
74 -  
75 - Date date = headers.getDate("Date");  
76 - return date == null ? System.currentTimeMillis() : date.getTime();  
77 - } catch (Exception e) {  
78 - e.printStackTrace();  
79 - } 63 +// OkHttpClient okHttpClient = new OkHttpClient();
  64 +// try {
  65 +// Request request = new Request.Builder().url(URL_TIME_SERVICE).build();
  66 +// Response response = okHttpClient.newCall(request).execute();
  67 +// Headers headers = response.headers();
  68 +//
  69 +// Date date = headers.getDate("Date");
  70 +// return date == null ? System.currentTimeMillis() : date.getTime();
  71 +// } catch (Exception e) {
  72 +// e.printStackTrace();
  73 +// }
80 74
81 return System.currentTimeMillis(); 75 return System.currentTimeMillis();
82 } 76 }
app/src/main/java/com/cnlive/gundam/main/presenter/AnchorInfoPresenter.java 0 → 100644
  1 +package com.cnlive.gundam.main.presenter;
  2 +
  3 +import android.content.Context;
  4 +
  5 +import com.cnlive.gundam.main.network.RetrofitUtil;
  6 +import com.cnlive.gundam.main.network.util.SignUtil;
  7 +import com.cnlive.gundam.main.presenter.view.AnchorInfoView;
  8 +import com.cnlive.gundam.user.model.ChannelInfoModel;
  9 +import com.cnlive.libs.util.Config;
  10 +
  11 +import java.util.HashMap;
  12 +import java.util.Map;
  13 +
  14 +import retrofit2.Call;
  15 +import retrofit2.Callback;
  16 +import retrofit2.Response;
  17 +
  18 +/**
  19 + * Created by xiansong on 2017/6/28.
  20 + */
  21 +
  22 +public class AnchorInfoPresenter {
  23 +
  24 + private AnchorInfoView mView;
  25 +
  26 + public AnchorInfoPresenter(AnchorInfoView view) {
  27 + this.mView = view;
  28 + }
  29 +
  30 + /**
  31 + * 查询主播信息
  32 + *
  33 + * @param context Context
  34 + * @param channelId 主播ID
  35 + */
  36 + public void checkAnchorInfo(Context context, String channelId) {
  37 + Map<String, String> params = new HashMap<>();
  38 + params.put("appId", Config.getAppId());
  39 + params.put("channelId", channelId);
  40 + RetrofitUtil.getApiService().getChannelInfo(SignUtil.getSignParamM(context, params)).enqueue(new Callback<ChannelInfoModel>() {
  41 + @Override
  42 + public void onResponse(Call<ChannelInfoModel> call, Response<ChannelInfoModel> response) {
  43 + if (response.isSuccessful()) {
  44 + ChannelInfoModel info = response.body();
  45 + if (info != null && "0".equals(info.getErrorCode())) {
  46 + if (mView != null) mView.onAnchorInfo(info);
  47 + } else {
  48 + if (mView != null) mView.getAnchorFailure();
  49 + }
  50 + }
  51 + }
  52 +
  53 + @Override
  54 + public void onFailure(Call<ChannelInfoModel> call, Throwable t) {
  55 + if (mView != null) mView.getAnchorFailure();
  56 + }
  57 + });
  58 + }
  59 +}
app/src/main/java/com/cnlive/gundam/main/presenter/view/AnchorInfoView.java 0 → 100644
  1 +package com.cnlive.gundam.main.presenter.view;
  2 +
  3 +import com.cnlive.gundam.user.model.ChannelInfoModel;
  4 +
  5 +public interface AnchorInfoView {
  6 + void onAnchorInfo(ChannelInfoModel channelInfo);
  7 +
  8 + void getAnchorFailure();
  9 +}
0 \ No newline at end of file 10 \ No newline at end of file
app/src/main/java/com/cnlive/gundam/main/ui/activity/BackBaseActivity.java 0 → 100644
  1 +package com.cnlive.gundam.main.ui.activity;
  2 +
  3 +import android.support.v7.app.AppCompatActivity;
  4 +import android.support.v7.widget.Toolbar;
  5 +import android.view.MenuItem;
  6 +import android.view.View;
  7 +import android.widget.TextView;
  8 +
  9 +import com.cnlive.gundam.R;
  10 +
  11 +/**
  12 + * Created by gujun on 2017/5/31.
  13 + */
  14 +
  15 +public class BackBaseActivity extends AppCompatActivity {
  16 +
  17 + private Toolbar toolbar;
  18 +
  19 + protected void setupToolBar(String title) {
  20 + toolbar = (Toolbar) findViewById(R.id.toolbar);
  21 + toolbar.setTitle("");
  22 + TextView toolbarTitle = (TextView) findViewById(R.id.toolbarTitle);
  23 + toolbarTitle.setText(title);
  24 + toolbar.setVisibility(View.VISIBLE);
  25 + toolbar.setNavigationIcon(R.drawable.btn_cancel);
  26 + setSupportActionBar(toolbar);
  27 +
  28 + }
  29 +
  30 + public void setToolBarVisible(boolean show) {
  31 + if (toolbar == null) return;
  32 + toolbar.setVisibility(show ? View.VISIBLE : View.GONE);
  33 + }
  34 +
  35 + @Override
  36 + public boolean onOptionsItemSelected(MenuItem item) {
  37 + if (item.getItemId() == android.R.id.home) {
  38 + this.onBackPressed();
  39 + }
  40 + return super.onOptionsItemSelected(item);
  41 + }
  42 +}
app/src/main/java/com/cnlive/gundam/main/ui/activity/MainActivity.java
1 package com.cnlive.gundam.main.ui.activity; 1 package com.cnlive.gundam.main.ui.activity;
2 2
  3 +import android.app.AlertDialog;
  4 +import android.app.Dialog;
  5 +import android.content.DialogInterface;
  6 +import android.content.Intent;
3 import android.databinding.DataBindingUtil; 7 import android.databinding.DataBindingUtil;
4 import android.os.Bundle; 8 import android.os.Bundle;
5 import android.support.v7.app.AppCompatActivity; 9 import android.support.v7.app.AppCompatActivity;
  10 +import android.widget.Toast;
6 11
7 import com.cnlive.gundam.R; 12 import com.cnlive.gundam.R;
8 import com.cnlive.gundam.databinding.ActivityMainBinding; 13 import com.cnlive.gundam.databinding.ActivityMainBinding;
  14 +import com.cnlive.gundam.main.presenter.AnchorInfoPresenter;
  15 +import com.cnlive.gundam.main.presenter.view.AnchorInfoView;
9 import com.cnlive.gundam.main.ui.fragment.ConfigFragment; 16 import com.cnlive.gundam.main.ui.fragment.ConfigFragment;
10 import com.cnlive.gundam.main.ui.fragment.HomeFragment; 17 import com.cnlive.gundam.main.ui.fragment.HomeFragment;
11 import com.cnlive.gundam.main.ui.fragment.LiveFragment; 18 import com.cnlive.gundam.main.ui.fragment.LiveFragment;
12 import com.cnlive.gundam.main.ui.fragment.UGCListFragment; 19 import com.cnlive.gundam.main.ui.fragment.UGCListFragment;
13 import com.cnlive.gundam.main.ui.widget.FragmentTabHost; 20 import com.cnlive.gundam.main.ui.widget.FragmentTabHost;
  21 +import com.cnlive.gundam.stream.ui.activity.StreamActivity;
  22 +import com.cnlive.gundam.user.activity.LoginActivity;
  23 +import com.cnlive.gundam.user.auth.UserService;
  24 +import com.cnlive.gundam.user.model.ChannelInfoModel;
  25 +import com.cnlive.gundam.user.model.User;
  26 +import com.cnlive.libs.util.Config;
14 27
15 import java.util.Arrays; 28 import java.util.Arrays;
16 29
@@ -18,7 +31,11 @@ import java.util.Arrays; @@ -18,7 +31,11 @@ import java.util.Arrays;
18 * Created by xiansong on 2017/6/27. 31 * Created by xiansong on 2017/6/27.
19 */ 32 */
20 33
21 -public class MainActivity extends AppCompatActivity implements FragmentTabHost.OnSetCurrentTabListener { 34 +public class MainActivity extends AppCompatActivity implements FragmentTabHost.OnSetCurrentTabListener, AnchorInfoView {
  35 +
  36 + private Dialog verifiedDialog;
  37 +
  38 + private AnchorInfoPresenter mAnchorInfoPresenter;
22 39
23 @Override 40 @Override
24 protected void onCreate(Bundle savedInstanceState) { 41 protected void onCreate(Bundle savedInstanceState) {
@@ -33,6 +50,8 @@ public class MainActivity extends AppCompatActivity implements FragmentTabHost.O @@ -33,6 +50,8 @@ public class MainActivity extends AppCompatActivity implements FragmentTabHost.O
33 FragmentTabHost.newTab("live", R.layout.indicator_main_live, UGCListFragment.class), 50 FragmentTabHost.newTab("live", R.layout.indicator_main_live, UGCListFragment.class),
34 FragmentTabHost.newTab("config", R.layout.indicator_main_mine, ConfigFragment.class) 51 FragmentTabHost.newTab("config", R.layout.indicator_main_mine, ConfigFragment.class)
35 )); 52 ));
  53 +
  54 + mAnchorInfoPresenter = new AnchorInfoPresenter(this);
36 } 55 }
37 56
38 @Override 57 @Override
@@ -45,8 +64,72 @@ public class MainActivity extends AppCompatActivity implements FragmentTabHost.O @@ -45,8 +64,72 @@ public class MainActivity extends AppCompatActivity implements FragmentTabHost.O
45 return false; 64 return false;
46 } 65 }
47 66
48 - private void onSetStreamTab(){ 67 + /**
  68 + * 直播按钮点击
  69 + */
  70 + private void onSetStreamTab() {
  71 + User user = UserService.getInstance(this).getActiveAccountInfo();
  72 + if (user.getUid() == 0) {
  73 + startActivity(new Intent(this, LoginActivity.class));
  74 + } else {
  75 + mAnchorInfoPresenter.checkAnchorInfo(this, user.getUid() + "");
  76 + }
  77 + }
  78 +
49 79
  80 + @Override
  81 + public void onAnchorInfo(ChannelInfoModel model) {
  82 + switch (model.getData().getStatus()) {
  83 + case -1:
  84 + Toast.makeText(this, "主播不存在", Toast.LENGTH_SHORT).show();
  85 + showVerifiedDialog();
  86 + break;
  87 + case 1:
  88 + Toast.makeText(this, "审核中,请耐心等待", Toast.LENGTH_SHORT).show();
  89 + break;
  90 + case 2:
  91 + Toast.makeText(this, "审核失败", Toast.LENGTH_SHORT).show();
  92 + break;
  93 + case 3:
  94 + Toast.makeText(this, "开启直播", Toast.LENGTH_SHORT).show();
  95 + String activityId = System.currentTimeMillis() + "";
  96 + String channelId = model.getData().getChannelId();
  97 + String channelName = model.getData().getChannelName();
  98 + String coverImgUrl = model.getData().getCoverImgUrl();
  99 + StreamActivity.start(this, activityId, channelId, channelName, coverImgUrl, false);
  100 + break;
  101 + case 4:
  102 + Toast.makeText(this, "主播被禁用", Toast.LENGTH_SHORT).show();
  103 + break;
  104 + }
  105 + }
  106 +
  107 + @Override
  108 + public void getAnchorFailure() {
  109 + Toast.makeText(this, getString(R.string.request_state_error), Toast.LENGTH_LONG).show();
50 } 110 }
51 111
  112 + private void showVerifiedDialog() {
  113 + verifiedDialog = new AlertDialog.Builder(this)
  114 + .setMessage("亲,完成实名认证就可以开播啦,现在就去认证吧?")
  115 + .setPositiveButton("去认证", new DialogInterface.OnClickListener() {
  116 + @Override
  117 + public void onClick(DialogInterface dialogInterface, int i) {
  118 + verifiedDialog.dismiss();
  119 + String channelId = UserService.getInstance(MainActivity.this).getActiveAccountInfo().getUid() + "";
  120 + String url = String.format(getString(R.string.verified_url), channelId, Config.getAppId());
  121 + Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
  122 + intent.putExtra("url", url);
  123 + intent.putExtra("title", "主播认证");
  124 + startActivity(intent);
  125 + }
  126 + })
  127 + .setNegativeButton("取消", new DialogInterface.OnClickListener() {
  128 + @Override
  129 + public void onClick(DialogInterface dialogInterface, int i) {
  130 + verifiedDialog.dismiss();
  131 + }
  132 + })
  133 + .show();
  134 + }
52 } 135 }
53 \ No newline at end of file 136 \ No newline at end of file
app/src/main/java/com/cnlive/gundam/main/ui/activity/WebViewActivity.java 0 → 100644
  1 +package com.cnlive.gundam.main.ui.activity;
  2 +
  3 +import android.databinding.DataBindingUtil;
  4 +import android.os.Bundle;
  5 +import android.support.v7.app.AppCompatActivity;
  6 +import android.view.View;
  7 +import android.webkit.WebChromeClient;
  8 +import android.webkit.WebSettings;
  9 +import android.webkit.WebView;
  10 +import android.webkit.WebViewClient;
  11 +
  12 +import com.cnlive.gundam.R;
  13 +import com.cnlive.gundam.databinding.ActivityWebviewBinding;
  14 +
  15 +
  16 +/**
  17 + * Created by Administrator on 2017/1/12.
  18 + */
  19 +
  20 +public class WebViewActivity extends AppCompatActivity {
  21 +
  22 +
  23 + private String path;
  24 + private String title;
  25 + private ActivityWebviewBinding binding;
  26 +
  27 + @Override
  28 + protected void onCreate(Bundle savedInstanceState) {
  29 + super.onCreate(savedInstanceState);
  30 + setContentView(R.layout.activity_webview);
  31 + getBundle();
  32 +
  33 + binding = DataBindingUtil.setContentView(this, R.layout.activity_webview);
  34 + binding.setTitle(title);
  35 + binding.webview.loadUrl(path);
  36 +
  37 + WebSettings s = binding.webview.getSettings();
  38 +
  39 + s.setBuiltInZoomControls(false);
  40 + s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
  41 +
  42 + // Default zoom is deprecated in Android 4.4
  43 + s.setUseWideViewPort(true);
  44 + s.setLoadWithOverviewMode(true);
  45 +
  46 + s.setAllowFileAccess(true);
  47 + s.setJavaScriptEnabled(true);
  48 +
  49 +// s.setUserAgentString(s.getUserAgentString() + "/" + Probe.appid);
  50 +
  51 + binding.webview.setWebViewClient(new WebViewClient() {
  52 + @Override
  53 + public boolean shouldOverrideUrlLoading(WebView view, String url) {
  54 + view.loadUrl(url);
  55 + return true;
  56 + }
  57 + });
  58 +
  59 + binding.webview.setWebChromeClient(webChromeClient);
  60 + }
  61 +
  62 + private void getBundle() {
  63 + if (getIntent().hasExtra("url")) path = getIntent().getStringExtra("url");
  64 + if (getIntent().hasExtra("title")) title = getIntent().getStringExtra("title");
  65 + }
  66 +
  67 + public void onWebViewClick(View view) {
  68 + onBackPressed();
  69 + }
  70 +
  71 + @Override
  72 + public void onBackPressed() {
  73 + if (binding.webview.canGoBack()) {
  74 + binding.webview.goBack();
  75 + }else super.onBackPressed();
  76 + }
  77 +
  78 + private WebChromeClient webChromeClient = new WebChromeClient() {
  79 + @Override
  80 + public void onProgressChanged(WebView view, int newProgress) {
  81 + if (newProgress >= 100) {
  82 + if (binding.webviewProgressbar != null) {
  83 + binding.webviewProgressbar.setVisibility(View.GONE);
  84 + }
  85 + } else {
  86 + if (binding.webviewProgressbar != null) {
  87 + binding.webviewProgressbar.setVisibility(View.VISIBLE);
  88 + binding.webviewProgressbar.setProgress(newProgress);
  89 + }
  90 + }
  91 + }
  92 + };
  93 +}
app/src/main/java/com/cnlive/gundam/main/ui/adapter/DataBindingAdapter.java
@@ -17,11 +17,11 @@ import com.cnlive.gundam.main.ui.adapter.holder.DataBindingViewHolder; @@ -17,11 +17,11 @@ import com.cnlive.gundam.main.ui.adapter.holder.DataBindingViewHolder;
17 17
18 public class DataBindingAdapter<T> extends BaseRecyclerAdapter<T> { 18 public class DataBindingAdapter<T> extends BaseRecyclerAdapter<T> {
19 private int layoutId; 19 private int layoutId;
20 - private int itemBRId; 20 + protected int itemBRId;
21 private int imageHeightBRId = -1; 21 private int imageHeightBRId = -1;
22 private int imageHeight; 22 private int imageHeight;
23 23
24 - private OnAdapterViewClickListener<T> l; 24 + protected OnAdapterViewClickListener<T> l;
25 private OnAdapterViewLoadMoreListener loadMoreListener; 25 private OnAdapterViewLoadMoreListener loadMoreListener;
26 26
27 public DataBindingAdapter(Context context, int layoutId, int itemBRId) { 27 public DataBindingAdapter(Context context, int layoutId, int itemBRId) {
app/src/main/java/com/cnlive/gundam/main/ui/fragment/ConfigFragment.java
@@ -57,10 +57,15 @@ public class ConfigFragment extends Fragment implements View.OnClickListener { @@ -57,10 +57,15 @@ public class ConfigFragment extends Fragment implements View.OnClickListener {
57 switch (view.getId()) { 57 switch (view.getId()) {
58 case R.id.config_header: 58 case R.id.config_header:
59 int uid = UserService.getInstance(getActivity()).getActiveAccountInfo().getUid(); 59 int uid = UserService.getInstance(getActivity()).getActiveAccountInfo().getUid();
60 - if (uid != 0)  
61 - startActivity(new Intent(getActivity(), UserPersonalActivity.class));  
62 - else 60 + if (uid != 0) {
  61 + //进入个人中心页面
  62 + Intent intent = new Intent(getActivity(), UserPersonalActivity.class);
  63 + intent.putExtra("isEdit",false);
  64 + startActivity(intent);
  65 + } else {
  66 + //进入登录页面
63 startActivity(new Intent(getActivity(), LoginActivity.class)); 67 startActivity(new Intent(getActivity(), LoginActivity.class));
  68 + }
64 break; 69 break;
65 70
66 case R.id.message: 71 case R.id.message:
app/src/main/java/com/cnlive/gundam/user/activity/UserPersonalActivity.java
1 package com.cnlive.gundam.user.activity; 1 package com.cnlive.gundam.user.activity;
2 2
  3 +import android.content.Intent;
3 import android.databinding.DataBindingUtil; 4 import android.databinding.DataBindingUtil;
4 import android.os.Bundle; 5 import android.os.Bundle;
5 import android.support.annotation.Nullable; 6 import android.support.annotation.Nullable;
6 -import android.support.v7.app.AppCompatActivity;  
7 7
8 import com.cnlive.gundam.R; 8 import com.cnlive.gundam.R;
  9 +import com.cnlive.gundam.main.ui.activity.BackBaseActivity;
  10 +import com.cnlive.gundam.user.fragment.UserPersonalEditFragment;
9 import com.cnlive.gundam.user.fragment.UserPersonalFragment; 11 import com.cnlive.gundam.user.fragment.UserPersonalFragment;
10 12
11 /** 13 /**
@@ -13,11 +15,24 @@ import com.cnlive.gundam.user.fragment.UserPersonalFragment; @@ -13,11 +15,24 @@ import com.cnlive.gundam.user.fragment.UserPersonalFragment;
13 * @time 2017/6/28 12:56 15 * @time 2017/6/28 12:56
14 * @desc ${TODD} 16 * @desc ${TODD}
15 */ 17 */
16 -public class UserPersonalActivity extends AppCompatActivity { 18 +public class UserPersonalActivity extends BackBaseActivity {
17 @Override 19 @Override
18 protected void onCreate(@Nullable Bundle savedInstanceState) { 20 protected void onCreate(@Nullable Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState); 21 super.onCreate(savedInstanceState);
20 - DataBindingUtil.setContentView(this, R.layout.activity_setting);  
21 - getSupportFragmentManager().beginTransaction().replace(R.id.setting_fragment, UserPersonalFragment.newInstance()).commit(); 22 + DataBindingUtil.setContentView(this, R.layout.activity_user_personal);
  23 + addFragment(getIntent());
  24 + }
  25 +
  26 + private void addFragment(Intent intent ){
  27 + if (intent.hasExtra("isEdit")) {
  28 + getSupportFragmentManager().beginTransaction().replace(R.id.contentLayout,
  29 + intent.getBooleanExtra("isEdit",false) ?
  30 + UserPersonalEditFragment.newInstance(intent.getIntExtra("type", 0)) :
  31 + UserPersonalFragment.newInstance()).commit();
  32 + }
  33 + }
  34 +
  35 + public void setTitle(String title){
  36 + setupToolBar(title);
22 } 37 }
23 } 38 }
app/src/main/java/com/cnlive/gundam/user/adapter/PersonalAdapter.java 0 → 100644
  1 +package com.cnlive.gundam.user.adapter;
  2 +
  3 +import android.content.Context;
  4 +import android.databinding.DataBindingUtil;
  5 +import android.databinding.ViewDataBinding;
  6 +import android.support.v7.widget.RecyclerView;
  7 +import android.view.LayoutInflater;
  8 +import android.view.ViewGroup;
  9 +
  10 +import com.cnlive.gundam.BR;
  11 +import com.cnlive.gundam.R;
  12 +import com.cnlive.gundam.main.ui.adapter.DataBindingAdapter;
  13 +import com.cnlive.gundam.main.ui.adapter.holder.DataBindingViewHolder;
  14 +import com.cnlive.gundam.user.model.PersonalData;
  15 +
  16 +/**
  17 + * Created by gujun on 2017/6/28.
  18 + */
  19 +
  20 +public class PersonalAdapter extends DataBindingAdapter<PersonalData>{
  21 +
  22 + public PersonalAdapter(Context context, int layoutId, int itemBRId) {
  23 + super(context, layoutId, itemBRId);
  24 + }
  25 +
  26 + @Override
  27 + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  28 + if(viewType == PersonalData.TYPE_HEADER){
  29 + ViewDataBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.layout_personal_header_item, parent, false);
  30 + DataBindingViewHolder viewHolder = new DataBindingViewHolder(binding.getRoot());
  31 + viewHolder.setBinding(binding);
  32 + return viewHolder;
  33 + }else{
  34 + return super.onCreateViewHolder(parent, viewType);
  35 + }
  36 + }
  37 +
  38 + @Override
  39 + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  40 + if(getItem(position).getItemType() == PersonalData.TYPE_HEADER){
  41 + DataBindingViewHolder videoListViewHolder = (DataBindingViewHolder) holder;
  42 + videoListViewHolder.getBinding().setVariable(itemBRId, getItem(position));
  43 + if (l != null)
  44 + videoListViewHolder.getBinding().setVariable(BR.viewClickListner, l);
  45 + videoListViewHolder.getBinding().executePendingBindings();
  46 + }else{
  47 + super.onBindViewHolder(holder, position);
  48 + }
  49 + }
  50 +
  51 + @Override
  52 + public int getItemViewType(int position) {
  53 + return getItem(position).getItemType();
  54 + }
  55 +}
app/src/main/java/com/cnlive/gundam/user/fragment/UserPersonalEditFragment.java 0 → 100644
  1 +package com.cnlive.gundam.user.fragment;
  2 +
  3 +import android.databinding.DataBindingUtil;
  4 +import android.os.Bundle;
  5 +import android.support.annotation.Nullable;
  6 +import android.support.v4.app.Fragment;
  7 +import android.view.LayoutInflater;
  8 +import android.view.View;
  9 +import android.view.ViewGroup;
  10 +import android.widget.Toast;
  11 +
  12 +import com.cnlive.gundam.R;
  13 +import com.cnlive.gundam.databinding.FragmentPersonalEditBinding;
  14 +import com.cnlive.gundam.user.activity.UserPersonalActivity;
  15 +import com.cnlive.gundam.user.auth.UserService;
  16 +import com.cnlive.gundam.user.model.User;
  17 +import com.cnlive.libs.user.IUserService;
  18 +import com.cnlive.libs.user.UserUtil;
  19 +import com.cnlive.libs.util.data.network.Callback;
  20 +
  21 +/**
  22 + * Created by gujun on 2017/6/28.
  23 + */
  24 +
  25 +public class UserPersonalEditFragment extends Fragment implements Callback, View.OnClickListener {
  26 +
  27 + public static final int TYPE_NICK = 0x1001;
  28 + public static final int TYPE_MOBILE = 0x1002;
  29 + public static final int TYPE_EMAIL = 0x1003;
  30 + public static final int TYPE_ADDRESS = 0x1004;
  31 +
  32 + private FragmentPersonalEditBinding binding;
  33 + private int type;
  34 + private User user;
  35 +
  36 + public static UserPersonalEditFragment newInstance(int type) {
  37 +
  38 + Bundle args = new Bundle();
  39 + args.putInt("type", type);
  40 + UserPersonalEditFragment fragment = new UserPersonalEditFragment();
  41 + fragment.setArguments(args);
  42 + return fragment;
  43 + }
  44 +
  45 + @Nullable
  46 + @Override
  47 + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  48 + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_personal_edit, container, false);
  49 + return binding.getRoot();
  50 + }
  51 +
  52 + @Override
  53 + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  54 + super.onViewCreated(view, savedInstanceState);
  55 + init();
  56 + }
  57 +
  58 + private void init() {
  59 + binding.setUserPersonalEditFragment(this);
  60 + type = getArguments().getInt("type");
  61 + UserService userService = UserService.getInstance(getActivity());
  62 + user = userService.getActiveAccountInfo();
  63 + String title = "";
  64 + switch (type) {
  65 + case TYPE_NICK:
  66 + binding.editText.setText(user.getNickname());
  67 + binding.editText.setVisibility(View.VISIBLE);
  68 + binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.GONE);
  69 + title = "修改昵称";
  70 + break;
  71 + case TYPE_MOBILE:
  72 + binding.editText.setVisibility(View.GONE);
  73 + binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.VISIBLE);
  74 + binding.includeMobileLayout.edtLoginNumber.setText(user.getMobile());
  75 + binding.includeMobileLayout.getVerify.setOnClickListener(this);
  76 + title = "修改手机号";
  77 + break;
  78 + case TYPE_EMAIL:
  79 + binding.editText.setText(user.getEmail());
  80 + binding.editText.setVisibility(View.VISIBLE);
  81 + binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.GONE);
  82 + title = "修改邮箱";
  83 + break;
  84 + case TYPE_ADDRESS:
  85 + binding.editText.setText(user.getLocation());
  86 + binding.editText.setVisibility(View.VISIBLE);
  87 + binding.includeMobileLayout.mobileKeycodeLayout.setVisibility(View.GONE);
  88 + title = "修改地址";
  89 + break;
  90 + }
  91 + ((UserPersonalActivity)getActivity()).setTitle(title);
  92 + }
  93 +
  94 + @Override
  95 + public void onClick(View v) {
  96 + if (v.getId() == R.id.submit) {
  97 + switch (type) {
  98 + case TYPE_NICK:
  99 + UserUtil.modifyUserInfo(String.valueOf(user.getUid()), "nickName", binding.editText.getText().toString(), this);
  100 + break;
  101 + case TYPE_MOBILE:
  102 + UserUtil.updateMobile(String.valueOf(user.getUid()), binding.includeMobileLayout.edtLoginNumber.getText().toString(), binding.includeMobileLayout.edtVerify.getText().toString(), this);
  103 + break;
  104 + case TYPE_EMAIL:
  105 + UserUtil.modifyUserInfo(String.valueOf(user.getUid()), "email", binding.editText.getText().toString(), this);
  106 + break;
  107 + case TYPE_ADDRESS:
  108 + UserUtil.modifyUserInfo(String.valueOf(user.getUid()), "location", binding.editText.getText().toString(), this);
  109 + break;
  110 + }
  111 + } else if (v.getId() == R.id.get_verify) {
  112 + //TODO 获取验证码
  113 + UserUtil.sendMessage(IUserService.REGISTER_OR_MODIFY_MOBILE, binding.includeMobileLayout.edtLoginNumber.getText().toString(), new Callback() {
  114 + @Override
  115 + public void onState(int i, String s, Object o) {
  116 + if (i == IUserService.SUCCESS) {
  117 + Toast.makeText(getActivity(), "验证码已发送", Toast.LENGTH_LONG).show();
  118 + } else {
  119 + Toast.makeText(getActivity(), "获取验证码失败" + s, Toast.LENGTH_LONG).show();
  120 + }
  121 +
  122 + }
  123 + });
  124 + }
  125 + }
  126 +
  127 + @Override
  128 + public void onState(int i, String s, Object o) {
  129 + if (i == IUserService.SUCCESS) {
  130 + Toast.makeText(getActivity(), "提交成功", Toast.LENGTH_LONG).show();
  131 + } else {
  132 + Toast.makeText(getActivity(), "提交失败" + s, Toast.LENGTH_LONG).show();
  133 + }
  134 +
  135 + //TODO 更新一下本地数据
  136 + }
  137 +}
app/src/main/java/com/cnlive/gundam/user/fragment/UserPersonalFragment.java
1 package com.cnlive.gundam.user.fragment; 1 package com.cnlive.gundam.user.fragment;
2 2
  3 +import android.content.Intent;
3 import android.databinding.DataBindingUtil; 4 import android.databinding.DataBindingUtil;
4 import android.os.Bundle; 5 import android.os.Bundle;
5 import android.support.annotation.Nullable; 6 import android.support.annotation.Nullable;
6 import android.support.v4.app.Fragment; 7 import android.support.v4.app.Fragment;
  8 +import android.support.v7.widget.LinearLayoutManager;
7 import android.view.LayoutInflater; 9 import android.view.LayoutInflater;
8 import android.view.View; 10 import android.view.View;
9 import android.view.ViewGroup; 11 import android.view.ViewGroup;
  12 +import android.widget.Toast;
10 13
  14 +import com.cnlive.gundam.BR;
11 import com.cnlive.gundam.R; 15 import com.cnlive.gundam.R;
12 import com.cnlive.gundam.databinding.FragmentUserPersonalBinding; 16 import com.cnlive.gundam.databinding.FragmentUserPersonalBinding;
  17 +import com.cnlive.gundam.main.ui.adapter.DataBindingAdapter;
  18 +import com.cnlive.gundam.user.activity.UserPersonalActivity;
  19 +import com.cnlive.gundam.user.adapter.PersonalAdapter;
  20 +import com.cnlive.gundam.user.auth.UserService;
  21 +import com.cnlive.gundam.user.model.PersonalData;
  22 +import com.cnlive.gundam.user.model.User;
13 23
  24 +import java.util.ArrayList;
  25 +import java.util.List;
14 26
15 27
16 /** 28 /**
@@ -18,38 +30,93 @@ import com.cnlive.gundam.databinding.FragmentUserPersonalBinding; @@ -18,38 +30,93 @@ import com.cnlive.gundam.databinding.FragmentUserPersonalBinding;
18 * @time 2017/6/28 13:06 30 * @time 2017/6/28 13:06
19 * @desc ${TODD} 31 * @desc ${TODD}
20 */ 32 */
21 -public class UserPersonalFragment extends Fragment{ 33 +public class UserPersonalFragment extends Fragment implements DataBindingAdapter.OnAdapterViewClickListener<PersonalData> {
22 34
23 private FragmentUserPersonalBinding binding; 35 private FragmentUserPersonalBinding binding;
24 36
  37 + private PersonalAdapter adapter;
25 38
26 - @Nullable  
27 - @Override  
28 - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
29 - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_user_personal, container, false);  
30 - return binding.getRoot();  
31 - } 39 + private List<PersonalData> personalData;
32 40
33 public static UserPersonalFragment newInstance() { 41 public static UserPersonalFragment newInstance() {
  42 +
  43 + Bundle args = new Bundle();
  44 +
34 UserPersonalFragment fragment = new UserPersonalFragment(); 45 UserPersonalFragment fragment = new UserPersonalFragment();
  46 + fragment.setArguments(args);
35 return fragment; 47 return fragment;
36 } 48 }
37 49
  50 + @Nullable
38 @Override 51 @Override
39 - public void onActivityCreated(Bundle savedInstanceState) {  
40 - super.onActivityCreated(savedInstanceState);  
41 - initToolBar();  
42 - /*init();  
43 - PersonalHeadItem.getContent(getActivity());  
44 - PersonalItem.getContent(getActivity());*/  
45 - }  
46 - private void initToolBar() {  
47 - binding.personalIncludeLayout.toolbarTitle.setText("个人资料"); 52 + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  53 + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_user_personal, container, false);
  54 + return binding.getRoot();
48 } 55 }
49 56
  57 + @Override
  58 + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  59 + super.onViewCreated(view, savedInstanceState);
  60 + initData();
  61 + init();
  62 + }
50 63
  64 + private void initData() {
  65 + UserService userService = UserService.getInstance(getActivity());
  66 + User user = userService.getActiveAccountInfo();
  67 + personalData = new ArrayList<>();
  68 + personalData.add(new PersonalData("头像", user.getFaceurl(), PersonalData.TYPE_HEADER));
  69 + personalData.add(new PersonalData("昵称", user.getNickname(), PersonalData.TYPE_NICK));
  70 + personalData.add(new PersonalData("性别", user.getGender(), PersonalData.TYPE_GENDER));
  71 + personalData.add(new PersonalData("手机号", user.getMobile(), PersonalData.TYPE_MOBILE));
  72 + personalData.add(new PersonalData("邮箱", user.getEmail(), PersonalData.TYPE_EMAIL));
  73 + personalData.add(new PersonalData("联系地址", user.getLocation(), PersonalData.TYPE_ADDRESS));
  74 + }
51 75
  76 + private void init() {
  77 + ((UserPersonalActivity)getActivity()).setTitle("个人资料");
  78 + binding.setListAdapter(adapter = new PersonalAdapter(getActivity(), R.layout.layout_personal_item, BR.data));
  79 + binding.setLayoutManager(new LinearLayoutManager(getActivity()));
  80 + adapter.updateItems(personalData);
  81 + adapter.setOnViewClickListener(this);
  82 + }
52 83
53 -  
54 - 84 + @Override
  85 + public void onViewClick(View v, PersonalData program) {
  86 + if (v.getId() == R.id.itemLayout) {
  87 + Intent intent = null;
  88 + switch (program.getItemType()) {
  89 + case PersonalData.TYPE_HEADER:
  90 + Toast.makeText(getActivity(), "头像点击", Toast.LENGTH_LONG).show();
  91 + break;
  92 + case PersonalData.TYPE_NICK:
  93 + intent = new Intent(getActivity(), UserPersonalActivity.class);
  94 + intent.putExtra("isEdit",true);
  95 + intent.putExtra("type", UserPersonalEditFragment.TYPE_NICK);
  96 + startActivity(intent);
  97 + break;
  98 + case PersonalData.TYPE_GENDER:
  99 + Toast.makeText(getActivity(), "性别点击", Toast.LENGTH_LONG).show();
  100 + break;
  101 + case PersonalData.TYPE_MOBILE:
  102 + intent = new Intent(getActivity(), UserPersonalActivity.class);
  103 + intent.putExtra("isEdit",true);
  104 + intent.putExtra("type", UserPersonalEditFragment.TYPE_MOBILE);
  105 + startActivity(intent);
  106 + break;
  107 + case PersonalData.TYPE_EMAIL:
  108 + intent = new Intent(getActivity(), UserPersonalActivity.class);
  109 + intent.putExtra("isEdit",true);
  110 + intent.putExtra("type", UserPersonalEditFragment.TYPE_EMAIL);
  111 + startActivity(intent);
  112 + break;
  113 + case PersonalData.TYPE_ADDRESS:
  114 + intent = new Intent(getActivity(), UserPersonalActivity.class);
  115 + intent.putExtra("isEdit",true);
  116 + intent.putExtra("type", UserPersonalEditFragment.TYPE_ADDRESS);
  117 + startActivity(intent);
  118 + break;
  119 + }
  120 + }
  121 + }
55 } 122 }
app/src/main/java/com/cnlive/gundam/user/model/PersonalData.java 0 → 100644
  1 +package com.cnlive.gundam.user.model;
  2 +
  3 +/**
  4 + * @author 陈硕
  5 + * @time 2017/6/28 13:55
  6 + * @desc ${TODD}
  7 + */
  8 +public class PersonalData {
  9 +
  10 + private String itemName;
  11 + private String itemMessage;
  12 + private int itemType;
  13 +
  14 + public static final int TYPE_HEADER = 0x1001;
  15 + public static final int TYPE_NICK = 0x1002;
  16 + public static final int TYPE_GENDER = 0x1003;
  17 + public static final int TYPE_MOBILE = 0x1004;
  18 + public static final int TYPE_EMAIL = 0x1005;
  19 + public static final int TYPE_ADDRESS = 0x1006;
  20 +
  21 + public PersonalData(String itemName, String itemMessage, int itemType) {
  22 + this.itemName = itemName;
  23 + this.itemMessage = itemMessage;
  24 + this.itemType = itemType;
  25 + }
  26 +
  27 + public String getItemName() {
  28 + return itemName;
  29 + }
  30 +
  31 + public void setItemName(String itemName) {
  32 + this.itemName = itemName;
  33 + }
  34 +
  35 + public String getItemMessage() {
  36 + return itemMessage;
  37 + }
  38 +
  39 + public void setItemMessage(String itemMessage) {
  40 + this.itemMessage = itemMessage;
  41 + }
  42 +
  43 + public int getItemType() {
  44 + return itemType;
  45 + }
  46 +
  47 + public void setItemType(int itemType) {
  48 + this.itemType = itemType;
  49 + }
  50 +}
app/src/main/java/com/cnlive/gundam/video/test.java deleted 100644 → 0
1 -package com.cnlive.gundam.video;  
2 -  
3 -/**  
4 - * Created by gujun on 2017/6/27.  
5 - */  
6 -  
7 -public class test {  
8 -}  
app/src/main/res/drawable/downloading_progress_bar.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +
  3 +
  4 +<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  5 +
  6 + <item android:id="@android:id/background">
  7 + <shape>
  8 + <corners android:radius="5dip" />
  9 + <gradient
  10 + android:startColor="#D5D5D5"
  11 + android:centerColor="#D5D5D5"
  12 + android:endColor="#D5D5D5" />
  13 + </shape>
  14 + </item>
  15 +
  16 + <item android:id="@android:id/progress">
  17 + <clip>
  18 + <shape>
  19 + <corners android:radius="5dip" />
  20 + <gradient
  21 + android:startColor="@color/ff4e51"
  22 + android:centerColor="@color/ff4e51"
  23 + android:endColor="@color/ff4e51" />
  24 + </shape>
  25 + </clip>
  26 + </item>
  27 +
  28 +</layer-list>
app/src/main/res/layout/activity_user_personal.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layout xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 + <data>
  5 +
  6 + </data>
  7 +
  8 + <LinearLayout
  9 + android:layout_width="match_parent"
  10 + android:layout_height="match_parent"
  11 + android:orientation="vertical">
  12 +
  13 + <include
  14 + layout="@layout/layout_actionbar_back"/>
  15 +
  16 + <RelativeLayout
  17 + android:id="@+id/contentLayout"
  18 + android:layout_width="match_parent"
  19 + android:layout_height="match_parent"/>
  20 +
  21 + </LinearLayout>
  22 +
  23 +</layout>
0 \ No newline at end of file 24 \ No newline at end of file
app/src/main/res/layout/activity_webview.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +
  3 +
  4 +<layout xmlns:android="http://schemas.android.com/apk/res/android"
  5 + xmlns:tools="http://schemas.android.com/tools">
  6 +
  7 + <data>
  8 +
  9 + <variable
  10 + name="title"
  11 + type="String" />
  12 +
  13 + </data>
  14 +
  15 + <RelativeLayout
  16 +
  17 + android:id="@+id/linear_web"
  18 + android:layout_width="match_parent"
  19 + android:layout_height="match_parent"
  20 + android:orientation="vertical">
  21 +
  22 + <RelativeLayout
  23 + android:id="@+id/toobar"
  24 + android:layout_width="match_parent"
  25 + android:layout_height="48dp"
  26 + android:background="@android:color/white">
  27 +
  28 + <ImageButton
  29 + android:layout_width="32dp"
  30 + android:layout_height="32dp"
  31 + android:layout_centerVertical="true"
  32 + android:layout_marginLeft="10dp"
  33 + android:background="@null"
  34 + android:onClick="onWebViewClick"
  35 + android:scaleType="centerCrop"
  36 + android:src="@drawable/btn_return" />
  37 +
  38 +
  39 + <TextView
  40 + android:id="@+id/title"
  41 + android:layout_width="wrap_content"
  42 + android:layout_height="wrap_content"
  43 + android:layout_centerInParent="true"
  44 + android:gravity="center"
  45 + android:text="@{title}"
  46 + android:textSize="20sp"
  47 + tools:text="标题" />
  48 + </RelativeLayout>
  49 +
  50 + <View android:id="@+id/line"
  51 + android:layout_width="match_parent"
  52 + android:layout_height="1dp"
  53 + android:layout_below="@+id/toobar"
  54 + android:background="@android:color/black" />
  55 +
  56 + <ProgressBar
  57 + android:id="@+id/webview_progressbar"
  58 + style="?android:attr/progressBarStyleHorizontal"
  59 + android:layout_width="match_parent"
  60 + android:layout_height="1dp"
  61 + android:layout_below="@+id/toobar"
  62 + android:focusable="false"
  63 + android:max="100"
  64 + android:progress="100"
  65 + android:progressDrawable="@drawable/downloading_progress_bar" />
  66 +
  67 + <WebView
  68 + android:id="@+id/webview"
  69 + android:layout_width="match_parent"
  70 + android:layout_height="match_parent"
  71 + android:layout_below="@+id/line"
  72 + android:background="@android:color/white" />
  73 +
  74 + </RelativeLayout>
  75 +</layout>
0 \ No newline at end of file 76 \ No newline at end of file
app/src/main/res/layout/fragment_personal_edit.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layout xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 + <data>
  5 +
  6 + <import type="com.cnlive.gundam.user.fragment.UserPersonalEditFragment" />
  7 +
  8 + <variable
  9 + name="userPersonalEditFragment"
  10 + type="UserPersonalEditFragment" />
  11 +
  12 + </data>
  13 +
  14 + <RelativeLayout
  15 + android:layout_width="match_parent"
  16 + android:layout_height="match_parent">
  17 +
  18 + <EditText
  19 + android:id="@+id/editText"
  20 + android:layout_width="match_parent"
  21 + android:layout_height="50dp"
  22 + android:visibility="gone"/>
  23 +
  24 + <include
  25 + android:id="@+id/includeMobileLayout"
  26 + layout="@layout/mobile_keycode_layout"/>
  27 +
  28 + <Button
  29 + android:id="@+id/submit"
  30 + android:layout_width="match_parent"
  31 + android:layout_height="50dp"
  32 + android:layout_alignParentBottom="true"
  33 + android:layout_marginBottom="200dp"
  34 + android:onClick="@{userPersonalEditFragment.onClick}"
  35 + android:text="提交" />
  36 +
  37 + </RelativeLayout>
  38 +
  39 +</layout>
0 \ No newline at end of file 40 \ No newline at end of file
app/src/main/res/layout/fragment_user_personal.xml
@@ -2,47 +2,34 @@ @@ -2,47 +2,34 @@
2 <layout xmlns:android="http://schemas.android.com/apk/res/android" 2 <layout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"> 3 xmlns:app="http://schemas.android.com/apk/res-auto">
4 4
5 - <!--<data> 5 + <data>
  6 +
  7 + <import type="com.cnlive.gundam.main.ui.adapter.DataBindingAdapter"/>
  8 + <import type="android.support.v7.widget.LinearLayoutManager"/>
  9 +
  10 + <variable
  11 + name="listAdapter"
  12 + type="DataBindingAdapter"/>
6 13
7 <variable 14 <variable
8 - name="liLayoutManager"  
9 - type="android.support.v7.widget.LinearLayoutManager" /> 15 + name="layoutManager"
  16 + type="LinearLayoutManager"/>
10 </data> 17 </data>
11 ---> 18 +
12 <RelativeLayout 19 <RelativeLayout
13 - android:id="@+id/main_view"  
14 android:layout_width="match_parent" 20 android:layout_width="match_parent"
15 android:layout_height="match_parent"> 21 android:layout_height="match_parent">
16 22
17 - <LinearLayout  
18 - android:id="@+id/persion_layout" 23 + <android.support.v7.widget.RecyclerView
  24 + android:id="@+id/recyclerView"
19 android:layout_width="match_parent" 25 android:layout_width="match_parent"
20 android:layout_height="match_parent" 26 android:layout_height="match_parent"
21 - android:orientation="vertical">  
22 -  
23 - <include  
24 - android:id="@+id/personalIncludeLayout"  
25 - layout="@layout/user_toolbar_title" />  
26 -  
27 -  
28 - <android.support.v7.widget.RecyclerView  
29 - android:id="@+id/lv_personal"  
30 - android:layout_width="match_parent"  
31 - android:layout_height="match_parent"  
32 - android:divider="@null"  
33 - android:fastScrollEnabled="true"  
34 - android:scrollbars="none"  
35 - />  
36 -  
37 - </LinearLayout>  
38 -  
39 - <ImageView  
40 - android:id="@+id/back_selector"  
41 - android:layout_width="30dp"  
42 - android:layout_height="30dp"  
43 - android:layout_marginLeft="@dimen/_20px"  
44 - android:layout_marginTop="@dimen/_28px"  
45 - android:src="@drawable/btn_return" /> 27 + android:clipToPadding="true"
  28 + android:clipChildren="true"
  29 + android:paddingTop="5dp"
  30 + android:background="@color/list_divider"
  31 + app:adapter="@{listAdapter}"
  32 + app:layoutManager="@{layoutManager}"/>
46 33
47 </RelativeLayout> 34 </RelativeLayout>
48 </layout> 35 </layout>
49 \ No newline at end of file 36 \ No newline at end of file
app/src/main/res/layout/layout_actionbar_back.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +
  3 +<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
  4 + android:id="@+id/toolbar"
  5 + xmlns:app="http://schemas.android.com/apk/res-auto"
  6 + xmlns:tools="http://schemas.android.com/tools"
  7 + android:layout_width="match_parent"
  8 + android:layout_height="?attr/actionBarSize"
  9 + android:theme="@style/ThemeOverlay.AppCompat.Light"
  10 + app:contentInsetEnd="?attr/actionBarSize"
  11 + android:visibility="gone"
  12 + tools:visibility="visible">
  13 +
  14 +
  15 + <TextView
  16 + android:id="@+id/toolbarTitle"
  17 + style="@style/ActionbarTitleStyle"
  18 + android:layout_width="wrap_content"
  19 + android:layout_height="wrap_content"
  20 + android:layout_gravity="center"
  21 + android:lines="1"
  22 + tools:text="here is title"/>
  23 +
  24 +</android.support.v7.widget.Toolbar>
0 \ No newline at end of file 25 \ No newline at end of file
app/src/main/res/layout/layout_personal_header_item.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + xmlns:app="http://schemas.android.com/apk/res-auto">
  5 +
  6 + <data>
  7 +
  8 + <import type="com.cnlive.gundam.user.model.PersonalData" />
  9 + <import type="com.cnlive.gundam.main.ui.adapter.DataBindingAdapter.OnAdapterViewClickListener"/>
  10 +
  11 + <variable
  12 + name="data"
  13 + type="PersonalData" />
  14 +
  15 + <variable
  16 + name="viewClickListner"
  17 + type="OnAdapterViewClickListener&lt;PersonalData>"/>
  18 +
  19 + </data>
  20 +
  21 + <RelativeLayout
  22 + android:id="@+id/itemLayout"
  23 + android:layout_width="match_parent"
  24 + android:layout_height="80dp"
  25 + android:onClick="@{(view)->viewClickListner.onViewClick(view,data)}">
  26 +
  27 + <RelativeLayout
  28 + android:layout_width="match_parent"
  29 + android:layout_height="match_parent"
  30 + android:layout_above="@+id/divider"
  31 + android:background="@android:color/white">
  32 +
  33 + <TextView
  34 + android:id="@+id/itemName"
  35 + android:layout_width="wrap_content"
  36 + android:layout_height="match_parent"
  37 + android:gravity="center_vertical"
  38 + android:text="@{data.getItemName()}"
  39 + android:textColor="@color/black"
  40 + android:textSize="18sp"
  41 + tools:text="nick" />
  42 +
  43 + <ImageView
  44 + android:layout_width="50dp"
  45 + android:layout_height="50dp"
  46 + android:layout_marginRight="50dp"
  47 + android:layout_alignParentRight="true"
  48 + android:layout_centerVertical="true"
  49 + android:scaleType="centerCrop"
  50 + app:error="@{@drawable/image_error}"
  51 + app:imageUrl="@{data.getItemMessage()}"/>
  52 +
  53 + <ImageView
  54 + android:layout_width="wrap_content"
  55 + android:layout_height="wrap_content"
  56 + android:layout_alignParentRight="true"
  57 + android:layout_centerVertical="true"/>
  58 +
  59 + </RelativeLayout>
  60 +
  61 + <View
  62 + android:id="@+id/divider"
  63 + android:layout_width="match_parent"
  64 + android:layout_height="5dp"
  65 + android:layout_alignParentBottom="true"/>
  66 +
  67 + </RelativeLayout>
  68 +
  69 +</layout>
0 \ No newline at end of file 70 \ No newline at end of file
app/src/main/res/layout/layout_personal_item.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools">
  4 +
  5 + <data>
  6 +
  7 + <import type="com.cnlive.gundam.user.model.PersonalData" />
  8 + <import type="com.cnlive.gundam.main.ui.adapter.DataBindingAdapter.OnAdapterViewClickListener"/>
  9 +
  10 + <variable
  11 + name="data"
  12 + type="PersonalData" />
  13 +
  14 + <variable
  15 + name="viewClickListner"
  16 + type="OnAdapterViewClickListener&lt;PersonalData>"/>
  17 +
  18 + </data>
  19 +
  20 + <RelativeLayout
  21 + android:id="@+id/itemLayout"
  22 + android:layout_width="match_parent"
  23 + android:layout_height="60dp"
  24 + android:onClick="@{(view)->viewClickListner.onViewClick(view,data)}">
  25 +
  26 + <RelativeLayout
  27 + android:layout_width="match_parent"
  28 + android:layout_height="match_parent"
  29 + android:layout_above="@+id/divider"
  30 + android:background="@android:color/white">
  31 +
  32 + <TextView
  33 + android:id="@+id/itemName"
  34 + android:layout_width="wrap_content"
  35 + android:layout_height="match_parent"
  36 + android:gravity="center_vertical"
  37 + android:text="@{data.getItemName()}"
  38 + android:textColor="@color/black"
  39 + android:textSize="18sp"
  40 + tools:text="nick" />
  41 +
  42 + <TextView
  43 + android:id="@+id/itemMsg"
  44 + android:layout_width="wrap_content"
  45 + android:layout_height="match_parent"
  46 + android:layout_alignParentRight="true"
  47 + android:layout_marginRight="50dp"
  48 + android:layout_toRightOf="@+id/itemName"
  49 + android:gravity="center_vertical|right"
  50 + android:text="@{data.getItemMessage()}"
  51 + android:textColor="@color/black"
  52 + android:textSize="18sp"
  53 + tools:text="haha" />
  54 +
  55 + <ImageView
  56 + android:layout_width="wrap_content"
  57 + android:layout_height="wrap_content"
  58 + android:layout_alignParentRight="true"
  59 + android:layout_centerVertical="true"/>
  60 +
  61 + </RelativeLayout>
  62 +
  63 + <View
  64 + android:id="@+id/divider"
  65 + android:layout_width="match_parent"
  66 + android:layout_height="5dp"
  67 + android:layout_alignParentBottom="true"/>
  68 +
  69 + </RelativeLayout>
  70 +
  71 +</layout>
0 \ No newline at end of file 72 \ No newline at end of file
app/src/main/res/layout/mobile_keycode_layout.xml
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 -<layout xmlns:android="http://schemas.android.com/apk/res/android"  
3 - > 2 +<layout xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 + <data>
  5 +
  6 + </data>
  7 +
4 <LinearLayout 8 <LinearLayout
5 android:id="@+id/mobile_keycode_layout" 9 android:id="@+id/mobile_keycode_layout"
6 android:layout_width="match_parent" 10 android:layout_width="match_parent"