Commit 7e24ab480629a9163d8c0ee047e832a975de3726

Authored by YangShuai
1 parent 8db8e71e

1 完成二维码分享界面搭建

Showing 28 changed files with 787 additions and 59 deletions
app/src/main/AndroidManifest.xml
@@ -3,12 +3,13 @@ @@ -3,12 +3,13 @@
3 package="com.cnlive.strike.speaker"> 3 package="com.cnlive.strike.speaker">
4 4
5 <application 5 <application
  6 + android:name="com.cnlive.strike.xiaojiaspeaker.MyApp"
6 android:allowBackup="true" 7 android:allowBackup="true"
7 android:icon="@mipmap/ic_launcher" 8 android:icon="@mipmap/ic_launcher"
8 android:label="@string/app_name" 9 android:label="@string/app_name"
  10 + android:networkSecurityConfig="@xml/network_security_config"
9 android:roundIcon="@mipmap/ic_launcher_round" 11 android:roundIcon="@mipmap/ic_launcher_round"
10 android:supportsRtl="true" 12 android:supportsRtl="true"
11 - android:networkSecurityConfig="@xml/network_security_config"  
12 android:theme="@style/AppTheme"> 13 android:theme="@style/AppTheme">
13 <activity android:name="com.cnlive.strike.xiaojiaspeaker.ToolBarTestActivity"></activity> 14 <activity android:name="com.cnlive.strike.xiaojiaspeaker.ToolBarTestActivity"></activity>
14 <activity android:name="com.cnlive.strike.xiaojiaspeaker.MainActivity"> 15 <activity android:name="com.cnlive.strike.xiaojiaspeaker.MainActivity">
app/src/main/java/com/cnlive/strike/xiaojiaspeaker/MainActivity.java
@@ -5,6 +5,7 @@ import android.content.Intent; @@ -5,6 +5,7 @@ import android.content.Intent;
5 import android.os.Bundle; 5 import android.os.Bundle;
6 import android.support.v7.app.AppCompatActivity; 6 import android.support.v7.app.AppCompatActivity;
7 7
  8 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
8 import com.cnlive.strike.xiaojiaspeaker.ui.activity.AllDeviceActivity; 9 import com.cnlive.strike.xiaojiaspeaker.ui.activity.AllDeviceActivity;
9 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity; 10 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
10 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BluetoothConnActivity; 11 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BluetoothConnActivity;
@@ -12,6 +13,7 @@ import com.cnlive.strike.xiaojiaspeaker.ui.activity.ConnBluetoothSuccessActivity @@ -12,6 +13,7 @@ import com.cnlive.strike.xiaojiaspeaker.ui.activity.ConnBluetoothSuccessActivity
12 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceInstructionActivity; 13 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceInstructionActivity;
13 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceManagerActivity; 14 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceManagerActivity;
14 import com.cnlive.strike.xiaojiaspeaker.ui.activity.FirmwareUpdateActivity; 15 import com.cnlive.strike.xiaojiaspeaker.ui.activity.FirmwareUpdateActivity;
  16 +import com.cnlive.strike.xiaojiaspeaker.ui.activity.InvitFriendActivity;
15 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SearchDeviceActivity; 17 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SearchDeviceActivity;
16 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectIMFriendActivity; 18 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectIMFriendActivity;
17 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectWifiActivity; 19 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectWifiActivity;
@@ -19,10 +21,12 @@ import com.cnlive.strike.xiaojiaspeaker.ui.activity.SpeakerMainActivity; @@ -19,10 +21,12 @@ import com.cnlive.strike.xiaojiaspeaker.ui.activity.SpeakerMainActivity;
19 21
20 public class MainActivity extends AppCompatActivity { 22 public class MainActivity extends AppCompatActivity {
21 private static final String TAG = "MainActivity"; 23 private static final String TAG = "MainActivity";
  24 +
22 @Override 25 @Override
23 protected void onCreate(Bundle savedInstanceState) { 26 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState); 27 super.onCreate(savedInstanceState);
25 setContentView(R.layout.activity_speaker_main); 28 setContentView(R.layout.activity_speaker_main);
  29 + XiaoJIaCommInfo.setUserId(this, "10510277");
26 // startActivity(new Intent(MainActivity.this, ToolBarTestActivity.class)); 30 // startActivity(new Intent(MainActivity.this, ToolBarTestActivity.class));
27 // startActivity(new Intent(MainActivity.this, BluetoothConnActivity.class)); 31 // startActivity(new Intent(MainActivity.this, BluetoothConnActivity.class));
28 // startActivity(new Intent(MainActivity.this, BlueToothStep1Activity.class)); 32 // startActivity(new Intent(MainActivity.this, BlueToothStep1Activity.class));
@@ -34,6 +38,9 @@ public class MainActivity extends AppCompatActivity { @@ -34,6 +38,9 @@ public class MainActivity extends AppCompatActivity {
34 // startActivity(new Intent(MainActivity.this, SelectWifiActivity.class)); 38 // startActivity(new Intent(MainActivity.this, SelectWifiActivity.class));
35 // startActivity(new Intent(MainActivity.this, ToolBarTestActivity.class)); 39 // startActivity(new Intent(MainActivity.this, ToolBarTestActivity.class));
36 // startActivity(new Intent(MainActivity.this, SelectIMFriendActivity.class)); 40 // startActivity(new Intent(MainActivity.this, SelectIMFriendActivity.class));
  41 +// startActivity(new Intent(MainActivity.this, InvitFriendActivity.class));
  42 +
  43 +
37 finish(); 44 finish();
38 } 45 }
39 46
app/src/main/java/com/cnlive/strike/xiaojiaspeaker/MyApp.java
@@ -2,6 +2,7 @@ package com.cnlive.strike.xiaojiaspeaker; @@ -2,6 +2,7 @@ package com.cnlive.strike.xiaojiaspeaker;
2 2
3 import android.app.Application; 3 import android.app.Application;
4 4
  5 +import com.alibaba.android.arouter.launcher.ARouter;
5 import com.cnlive.libs.base.application.AppConfig; 6 import com.cnlive.libs.base.application.AppConfig;
6 import com.cnlive.strike.speaker.BuildConfig; 7 import com.cnlive.strike.speaker.BuildConfig;
7 8
@@ -10,13 +11,28 @@ public class MyApp extends Application { @@ -10,13 +11,28 @@ public class MyApp extends Application {
10 @Override 11 @Override
11 public void onCreate() { 12 public void onCreate() {
12 super.onCreate(); 13 super.onCreate();
  14 + initARouter();
13 String userId = ""; 15 String userId = "";
14 - AppConfig.init(this, BuildConfig.APP_ID, BuildConfig.APP_KEY,  
15 - BuildConfig.APP_SCERET, BuildConfig.SPECIAL_GROUP_MEMBER_LIMIT,  
16 - BuildConfig.VERSION_AS_DEBUG, "","",  
17 - "", "",  
18 - "","", "",  
19 - "", "","",  
20 - BuildConfig.BAIDU_MAP_APP_KEY, ""); 16 +// AppConfig.init(this, BuildConfig.APP_ID, BuildConfig.APP_KEY,
  17 +// BuildConfig.APP_SCERET, BuildConfig.SPECIAL_GROUP_MEMBER_LIMIT,
  18 +// BuildConfig.VERSION_AS_DEBUG, "","",
  19 +// "", "",
  20 +// "","", "",
  21 +// "", "","",
  22 +// BuildConfig.BAIDU_MAP_APP_KEY, "");
21 } 23 }
  24 +
  25 +
  26 + /**
  27 + * 初始化阿里的路由
  28 + */
  29 + private void initARouter() {
  30 + if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效
  31 + ARouter.openLog(); // 打印日志
  32 + ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
  33 + ARouter.printStackTrace(); // 打印日志的时候打印线程堆栈
  34 + }
  35 + ARouter.init(this); // 尽可能早,推荐在Application中初始化
  36 + }
  37 +
22 } 38 }
module_xiaojiaSoundBox/src/main/AndroidManifest.xml
@@ -17,7 +17,8 @@ @@ -17,7 +17,8 @@
17 <uses-permission android:name="android.permission.INTERNET" /> 17 <uses-permission android:name="android.permission.INTERNET" />
18 18
19 <application> 19 <application>
20 - <activity android:name=".ui.activity.UserManagerActivity"></activity> 20 + <activity android:name=".ui.activity.InvitFriendActivity"></activity>
  21 + <activity android:name=".ui.activity.UserManagerActivity" />
21 <activity android:name=".ui.activity.ChangeDeviceNameActivity" /> 22 <activity android:name=".ui.activity.ChangeDeviceNameActivity" />
22 <activity android:name=".ui.activity.DeviceDetailActivity" /> 23 <activity android:name=".ui.activity.DeviceDetailActivity" />
23 <activity android:name=".ui.activity.SetFriendsRoleActivity" /> 24 <activity android:name=".ui.activity.SetFriendsRoleActivity" />
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/commonInfo/CommInfo.java renamed to module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/commonInfo/XiaoJIaCommInfo.java
@@ -9,7 +9,7 @@ import com.cnlive.strike.xiaojiaspeaker.util.MySpHelper; @@ -9,7 +9,7 @@ import com.cnlive.strike.xiaojiaspeaker.util.MySpHelper;
9 * 9 *
10 * @author ys 10 * @author ys
11 */ 11 */
12 -public class CommInfo { 12 +public class XiaoJIaCommInfo {
13 //用户ID 13 //用户ID
14 private static final String KEY_USER_ID = "xiaojia_UserId"; 14 private static final String KEY_USER_ID = "xiaojia_UserId";
15 //是否显示礼物弹窗 15 //是否显示礼物弹窗
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/constants/XiaoJiaConst.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.constants;
  2 +
  3 +public class XiaoJiaConst {
  4 + public static final String QRCODE_TYPE="xiaoJiaSpeakerType";
  5 + public static final String INVIT_QRCODE="1";//二维码邀请
  6 + public static final String INVIT_FRIEND="2";//联系人邀请
  7 +
  8 +
  9 +
  10 +}
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/presenter/InvitFriendPresenter.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.frame.presenter;
  2 +
  3 +import android.content.Context;
  4 +import android.util.Log;
  5 +import android.view.View;
  6 +
  7 +import com.cnlive.libs.base.logic.Logic;
  8 +import com.cnlive.libs.base.logic.callback.DataCallback;
  9 +import com.cnlive.libs.base.logic.callback.FailureCallback;
  10 +import com.cnlive.libs.base.logic.callback.SuccessCallback;
  11 +import com.cnlive.strike.xiaojiaspeaker.frame.view.InvitFriendView;
  12 +import com.cnlive.strike.xiaojiaspeaker.netWork.ApiServiceXiaoJia;
  13 +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean;
  14 +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean;
  15 +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.SubscriptionBaseInfo;
  16 +import com.cnlive.strike.xiaojiaspeaker.netWork.result.SubscriptionRequest;
  17 +import com.cnlive.strike.xiaojiaspeaker.util.QMUITipDialogUtil;
  18 +import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
  19 +
  20 +import java.util.HashMap;
  21 +import java.util.Map;
  22 +
  23 +import io.reactivex.disposables.Disposable;
  24 +
  25 +public class InvitFriendPresenter extends MvpBasePresenter<InvitFriendView> {
  26 +
  27 + private String TAG = "InvitFriendPresenter";
  28 +
  29 + /**
  30 + * 获取角色列表
  31 + *
  32 + * @param context
  33 + * @param sids
  34 + * @param familyId
  35 + */
  36 + public void getSetRoleList(Context context, String sids, String familyId) {
  37 + if (null == getView()) {
  38 + return;
  39 + }
  40 + getView().showLoadingView();
  41 + Map<String, String> map = new HashMap<>();
  42 + map.put("sids", sids);
  43 + map.put("familyId", familyId);
  44 + Logic.create(map)
  45 + .action(new Logic.Action<Map<String, String>, SubscriptionBaseInfo<RoleNetBean>>() {
  46 + @Override
  47 + public Disposable action(Map<String, String> paramsMap, DataCallback<SubscriptionBaseInfo<RoleNetBean>> dataCallback) {
  48 + return SubscriptionRequest.service(ApiServiceXiaoJia.class, api -> api.getSetRoleList(paramsMap)).subscribe(context, dataCallback);
  49 + }
  50 + }).<SubscriptionBaseInfo<RoleNetBean>>event()
  51 + .setSuccessCallback(new SuccessCallback<SubscriptionBaseInfo<RoleNetBean>>() {
  52 + @Override
  53 + public void onSuccess(SubscriptionBaseInfo<RoleNetBean> baseInfo) {
  54 + Log.e(TAG, "onSuccess: ");
  55 +
  56 + if (null == getView()) {
  57 + return;
  58 + }
  59 + getView().hideLoadingView();
  60 + getView().initView(baseInfo.getData());
  61 + }
  62 + })
  63 + .setFailureCallback(new FailureCallback() {
  64 + @Override
  65 + public void onFailure(int i, String s) {
  66 + if (null == getView()) {
  67 + return;
  68 + }
  69 + //显示重试
  70 + getView().hideLoadingView();
  71 + getView().showRetryView(i, new View.OnClickListener() {
  72 + @Override
  73 + public void onClick(View view) {
  74 + getSetRoleList(context, sids, familyId);
  75 + }
  76 + });
  77 + }
  78 + })
  79 +
  80 + .start();
  81 + }
  82 +}
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/AllDeviceFragmentView.java
@@ -2,26 +2,20 @@ package com.cnlive.strike.xiaojiaspeaker.frame.view; @@ -2,26 +2,20 @@ package com.cnlive.strike.xiaojiaspeaker.frame.view;
2 2
3 import android.app.Activity; 3 import android.app.Activity;
4 import android.graphics.Color; 4 import android.graphics.Color;
5 -import android.support.design.widget.BottomSheetBehavior;  
6 -import android.support.design.widget.BottomSheetDialog;  
7 import android.support.v7.widget.LinearLayoutManager; 5 import android.support.v7.widget.LinearLayoutManager;
8 import android.util.Log; 6 import android.util.Log;
9 -import android.view.LayoutInflater;  
10 import android.view.View; 7 import android.view.View;
11 8
12 import com.cnlive.strike.xiaojiaspeaker.R; 9 import com.cnlive.strike.xiaojiaspeaker.R;
13 -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;  
14 -import com.cnlive.strike.xiaojiaspeaker.model.AllDeviceInfo; 10 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
15 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyListBean; 11 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyListBean;
16 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity; 12 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
17 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceDetailActivity; 13 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceDetailActivity;
18 -import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceManagerActivity;  
19 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.AllDeviceAdapter; 14 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.AllDeviceAdapter;
20 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment; 15 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment;
21 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu; 16 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu;
22 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo; 17 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo;
23 import com.hannesdorfmann.mosby3.mvp.MvpView; 18 import com.hannesdorfmann.mosby3.mvp.MvpView;
24 -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;  
25 19
26 import java.util.ArrayList; 20 import java.util.ArrayList;
27 import java.util.List; 21 import java.util.List;
@@ -58,11 +52,11 @@ public class AllDeviceFragmentView implements MvpView { @@ -58,11 +52,11 @@ public class AllDeviceFragmentView implements MvpView {
58 Log.e(TAG, "getId: " + usersBean.getUserId()); 52 Log.e(TAG, "getId: " + usersBean.getUserId());
59 Log.e(TAG, "getToken: " + usersBean.getToken()); 53 Log.e(TAG, "getToken: " + usersBean.getToken());
60 //存储家庭id 54 //存储家庭id
61 - CommInfo.setFamilyId(getContext(), usersBean.getId()); 55 + XiaoJIaCommInfo.setFamilyId(getContext(), usersBean.getId());
62 //存储移动id(用于配网) 56 //存储移动id(用于配网)
63 - CommInfo.setCMCCId(getContext(), usersBean.getUserId()); 57 + XiaoJIaCommInfo.setCMCCId(getContext(), usersBean.getUserId());
64 //存储移动token 58 //存储移动token
65 - CommInfo.setToken(getContext(), usersBean.getToken()); 59 + XiaoJIaCommInfo.setToken(getContext(), usersBean.getToken());
66 } 60 }
67 //存储移动id 61 //存储移动id
68 if (null != usersBean.getDeviceList()) { 62 if (null != usersBean.getDeviceList()) {
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/InvitFriendView.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.frame.view;
  2 +
  3 +import android.app.Activity;
  4 +import android.graphics.Bitmap;
  5 +import android.net.Uri;
  6 +import android.support.v7.widget.LinearLayoutManager;
  7 +import android.view.View;
  8 +
  9 +import com.alibaba.android.arouter.launcher.ARouter;
  10 +import com.cnlive.libs.base.arouter.QrService;
  11 +import com.cnlive.libs.base.util.SimpleDES;
  12 +import com.cnlive.strike.application.GlideApp;
  13 +import com.cnlive.strike.xiaojiaspeaker.R;
  14 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
  15 +import com.cnlive.strike.xiaojiaspeaker.constants.XiaoJiaConst;
  16 +import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo;
  17 +import com.cnlive.strike.xiaojiaspeaker.model.XiaoJiaQrcode;
  18 +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean;
  19 +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean;
  20 +import com.cnlive.strike.xiaojiaspeaker.ui.adapter.SetRoleAdapter;
  21 +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.InvitFriendFragment;
  22 +import com.cnlive.strike.xiaojiaspeaker.ui.widget.EditRoleDialog;
  23 +import com.cnlive.strike.xiaojiaspeaker.ui.widget.SelectDialog;
  24 +import com.cnlive.strike.xiaojiaspeaker.util.CommonUtils;
  25 +import com.cnlive.strike.xiaojiaspeaker.util.DensityUtil;
  26 +import com.cnlive.strike.xiaojiaspeaker.util.GsonUtil;
  27 +import com.hannesdorfmann.mosby3.mvp.MvpView;
  28 +
  29 +import org.json.JSONException;
  30 +import org.json.JSONObject;
  31 +
  32 +import java.util.ArrayList;
  33 +import java.util.List;
  34 +
  35 +public class InvitFriendView implements MvpView {
  36 + private InvitFriendFragment fragment;
  37 + private List<RoleInfo> roleInfoList;
  38 + private SetRoleAdapter setRoleAdapter;
  39 +
  40 + public InvitFriendView(InvitFriendFragment fragment) {
  41 + this.fragment = fragment;
  42 + }
  43 +
  44 + public Activity getContext() {
  45 + return fragment == null ? null : fragment.getActivity();
  46 + }
  47 +
  48 + public void initView(RoleNetBean roleNetBean) {
  49 + roleInfoList = new ArrayList<>();
  50 + //整理数据
  51 + //获取选中的联系人
  52 + if (null != roleNetBean.getRoleUserList()) {
  53 + RoleInfo roleInfo = null;
  54 + for (int i = 0; i < roleNetBean.getRoleUserList().size(); i++) {
  55 + roleInfo = new RoleInfo();
  56 + roleInfo.setUid(roleNetBean.getRoleUserList().get(i).getSid());
  57 + roleInfo.setUserName(roleNetBean.getRoleUserList().get(i).getNick());
  58 + roleInfo.setUserIcon(roleNetBean.getRoleUserList().get(i).getFace());
  59 + List<RoleNetBean.RoleListBean> roleList = new ArrayList<>();
  60 + for (int j = 0; j < roleNetBean.getRoleList().size(); j++) {
  61 + RoleNetBean.RoleListBean bean = new RoleNetBean.RoleListBean();
  62 + bean.setAllowUse(roleNetBean.getRoleList().get(j).isAllowUse());
  63 + bean.setId(roleNetBean.getRoleList().get(j).getId());
  64 + bean.setRoleName(roleNetBean.getRoleList().get(j).getRoleName());
  65 + bean.setParentPosition(i);
  66 + roleList.add(bean);
  67 + }
  68 + roleInfo.setRoleList(roleList);
  69 + roleInfoList.add(roleInfo);
  70 + }
  71 + }
  72 + setRoleAdapter = new SetRoleAdapter(getContext(), roleInfoList);
  73 +// setRoleAdapter.setGridCount(4);
  74 + setRoleAdapter.setIsShowItemUserInfo(View.GONE);
  75 + fragment.binding.rvRole.setLayoutManager(new LinearLayoutManager(getContext()));
  76 + fragment.binding.rvRole.setAdapter(setRoleAdapter);
  77 + //设置角色选中事件
  78 + setRoleAdapter.setOnSelectListener(new SetRoleAdapter.OnSelectListener() {
  79 + @Override
  80 + public void onSelect(int roleId) {
  81 + fragment.binding.llNoQrcode.setVisibility(View.GONE);
  82 + createQrcode(roleId);
  83 + }
  84 +
  85 + @Override
  86 + public void onCancel() {
  87 + fragment.binding.llNoQrcode.setVisibility(View.VISIBLE);
  88 + }
  89 + });
  90 + }
  91 +
  92 + public void createQrcode(int roleId) {
  93 + JSONObject jsonObject = new JSONObject();
  94 + try {
  95 + XiaoJiaQrcode xiaoJiaQrcode = new XiaoJiaQrcode();
  96 + xiaoJiaQrcode.setFamilyId(XiaoJIaCommInfo.getFamilyId(getContext()));
  97 + xiaoJiaQrcode.setRoleId(roleId);
  98 + xiaoJiaQrcode.setUuid(CommonUtils.getUUID());
  99 +
  100 + jsonObject.put("content", GsonUtil.GsonString(xiaoJiaQrcode));
  101 + jsonObject.put("time", System.currentTimeMillis());
  102 + jsonObject.put("type", XiaoJiaConst.QRCODE_TYPE);
  103 +
  104 + String qrContent = jsonObject.toString();
  105 + String encryptionContent = SimpleDES.ebotongEncrypto(qrContent, "cnliveIm");
  106 + encryptionContent = encryptionContent.replaceAll("\\\n", "");
  107 + QrService service = (QrService) ARouter.getInstance().navigation(QrService.class);
  108 + if (null == service) {
  109 + return;
  110 + }
  111 + Bitmap bitmap = service.createQRNoIconBitmap(encryptionContent, DensityUtil.dp2px(getContext(), 245));
  112 +// binding.ivQr.setBackgroundDrawable(bitmap);
  113 + if (getContext() == null) {
  114 + return;
  115 + }
  116 + if (null != bitmap) {
  117 + GlideApp.with(getContext()).load(bitmap).into(fragment.binding.ivQrcode);
  118 + }
  119 +
  120 + } catch (JSONException e) {
  121 + e.printStackTrace();
  122 + }
  123 + }
  124 +
  125 + /**
  126 + * 显示loading
  127 + */
  128 + public void showLoadingView() {
  129 + if (fragment.binding.emptyLayout == null) {
  130 + return;
  131 + }
  132 + fragment.binding.emptyLayout.show(true);
  133 + }
  134 +
  135 + /**
  136 + * 隐藏loading
  137 + */
  138 + public void hideLoadingView() {
  139 + if (fragment.binding.emptyLayout == null) {
  140 + return;
  141 + }
  142 + fragment.binding.emptyLayout.hide();
  143 + }
  144 +
  145 + /**
  146 + * 显示重试页面
  147 + *
  148 + * @param errorCode
  149 + * @param listener
  150 + */
  151 + public void showRetryView(int errorCode, View.OnClickListener listener) {
  152 + //显示空视图
  153 + fragment.binding.emptyLayout.setVisibility(View.VISIBLE);
  154 +
  155 + if (fragment.binding.emptyLayout == null) return;
  156 + String titleText = "";
  157 + String detailText = "";
  158 + if (errorCode == -3) {
  159 + titleText = getContext().getString(R.string.msg_failed_network_title);
  160 + detailText = getContext().getString(R.string.msg_failed_network_detail);
  161 + } else {
  162 + titleText = getContext().getString(R.string.msg_failed_other_title);
  163 + detailText = getContext().getString(R.string.msg_failed_other_detail);
  164 + }
  165 + fragment.binding.emptyLayout.show(false, titleText, detailText, getContext().getString(R.string.retry), R.drawable.wufalianjie, listener);
  166 + }
  167 +}
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/SelectWifiFragmentView.java
@@ -5,7 +5,6 @@ import android.bluetooth.BluetoothGatt; @@ -5,7 +5,6 @@ import android.bluetooth.BluetoothGatt;
5 import android.graphics.Typeface; 5 import android.graphics.Typeface;
6 import android.net.wifi.ScanResult; 6 import android.net.wifi.ScanResult;
7 import android.os.Handler; 7 import android.os.Handler;
8 -import android.support.annotation.NonNull;  
9 import android.support.v4.content.ContextCompat; 8 import android.support.v4.content.ContextCompat;
10 import android.support.v7.widget.LinearLayoutManager; 9 import android.support.v7.widget.LinearLayoutManager;
11 import android.text.TextUtils; 10 import android.text.TextUtils;
@@ -20,15 +19,13 @@ import com.clj.fastble.data.BleDevice; @@ -20,15 +19,13 @@ import com.clj.fastble.data.BleDevice;
20 import com.clj.fastble.exception.BleException; 19 import com.clj.fastble.exception.BleException;
21 import com.cnlive.libs.base.util.AlertUtil; 20 import com.cnlive.libs.base.util.AlertUtil;
22 import com.cnlive.strike.xiaojiaspeaker.R; 21 import com.cnlive.strike.xiaojiaspeaker.R;
23 -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo; 22 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
24 import com.cnlive.strike.xiaojiaspeaker.constants.BlufiConstants; 23 import com.cnlive.strike.xiaojiaspeaker.constants.BlufiConstants;
25 -import com.cnlive.strike.xiaojiaspeaker.netWork.bean.ConfigDeviceNetParam;  
26 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.WifiRecycleAdapter; 24 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.WifiRecycleAdapter;
27 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SelectWifiFragment; 25 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SelectWifiFragment;
28 import com.cnlive.strike.xiaojiaspeaker.ui.widget.TipDialog; 26 import com.cnlive.strike.xiaojiaspeaker.ui.widget.TipDialog;
29 import com.cnlive.strike.xiaojiaspeaker.ui.widget.WifiPwdDialog; 27 import com.cnlive.strike.xiaojiaspeaker.ui.widget.WifiPwdDialog;
30 import com.cnlive.strike.xiaojiaspeaker.util.BlueToothUtil; 28 import com.cnlive.strike.xiaojiaspeaker.util.BlueToothUtil;
31 -import com.cnlive.strike.xiaojiaspeaker.util.CommonUtils;  
32 import com.cnlive.strike.xiaojiaspeaker.util.QMUITipDialogUtil; 29 import com.cnlive.strike.xiaojiaspeaker.util.QMUITipDialogUtil;
33 import com.cnlive.strike.xiaojiaspeaker.util.WifiUtils; 30 import com.cnlive.strike.xiaojiaspeaker.util.WifiUtils;
34 import com.hannesdorfmann.mosby3.mvp.MvpView; 31 import com.hannesdorfmann.mosby3.mvp.MvpView;
@@ -62,8 +59,8 @@ public class SelectWifiFragmentView implements MvpView { @@ -62,8 +59,8 @@ public class SelectWifiFragmentView implements MvpView {
62 } 59 }
63 60
64 public void initWifiList(final BleDevice bleDevice) { 61 public void initWifiList(final BleDevice bleDevice) {
65 - this.familyId = CommInfo.getFamilyId(getContext());  
66 - this.cmccId = CommInfo.getCMCCId(getContext()); 62 + this.familyId = XiaoJIaCommInfo.getFamilyId(getContext());
  63 + this.cmccId = XiaoJIaCommInfo.getCMCCId(getContext());
67 this.bleDevice = bleDevice; 64 this.bleDevice = bleDevice;
68 showLoading(); 65 showLoading();
69 initWifiPwdDialog(); 66 initWifiPwdDialog();
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/UserManagerView.java
@@ -7,22 +7,20 @@ import android.support.v7.widget.LinearLayoutManager; @@ -7,22 +7,20 @@ import android.support.v7.widget.LinearLayoutManager;
7 import android.view.View; 7 import android.view.View;
8 8
9 import com.cnlive.strike.xiaojiaspeaker.R; 9 import com.cnlive.strike.xiaojiaspeaker.R;
10 -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo; 10 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
11 import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo; 11 import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo;
12 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean; 12 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean;
13 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean; 13 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean;
14 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity; 14 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
  15 +import com.cnlive.strike.xiaojiaspeaker.ui.activity.InvitFriendActivity;
15 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectIMFriendActivity; 16 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectIMFriendActivity;
16 -import com.cnlive.strike.xiaojiaspeaker.ui.adapter.SetRoleAdapter;  
17 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.UserManagerAdapter; 17 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.UserManagerAdapter;
18 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.UserManagerFragment; 18 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.UserManagerFragment;
19 import com.cnlive.strike.xiaojiaspeaker.ui.widget.EditRoleDialog; 19 import com.cnlive.strike.xiaojiaspeaker.ui.widget.EditRoleDialog;
20 import com.cnlive.strike.xiaojiaspeaker.ui.widget.SelectDialog; 20 import com.cnlive.strike.xiaojiaspeaker.ui.widget.SelectDialog;
21 -import com.cnlive.strike.xiaojiaspeaker.ui.widget.TipDialog;  
22 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu; 21 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu;
23 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo; 22 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo;
24 import com.cnlive.strike.xiaojiaspeaker.util.GsonUtil; 23 import com.cnlive.strike.xiaojiaspeaker.util.GsonUtil;
25 -import com.cnlive.strike.xiaojiaspeaker.util.utilcode.util.GsonUtils;  
26 import com.hannesdorfmann.mosby3.mvp.MvpView; 24 import com.hannesdorfmann.mosby3.mvp.MvpView;
27 25
28 import java.util.ArrayList; 26 import java.util.ArrayList;
@@ -109,7 +107,7 @@ public class UserManagerView implements MvpView { @@ -109,7 +107,7 @@ public class UserManagerView implements MvpView {
109 adapter.setOnEditClickListener(new UserManagerAdapter.OnEditClickListener() { 107 adapter.setOnEditClickListener(new UserManagerAdapter.OnEditClickListener() {
110 @Override 108 @Override
111 public void editClick(int position, FamilyRoleBean.FamilyRoleListBean bean) { 109 public void editClick(int position, FamilyRoleBean.FamilyRoleListBean bean) {
112 - fragment.getPresenter().getSetRoleList(getContext(), bean.getSid() + "", CommInfo.getFamilyId(getContext()), bean); 110 + fragment.getPresenter().getSetRoleList(getContext(), bean.getSid() + "", XiaoJIaCommInfo.getFamilyId(getContext()), bean);
113 } 111 }
114 }); 112 });
115 //删除按钮点击 113 //删除按钮点击
@@ -143,6 +141,13 @@ public class UserManagerView implements MvpView { @@ -143,6 +141,13 @@ public class UserManagerView implements MvpView {
143 SelectIMFriendActivity.startActivity(getContext()); 141 SelectIMFriendActivity.startActivity(getContext());
144 } 142 }
145 }); 143 });
  144 + //二维码点击
  145 + fragment.binding.btnQrcode.setOnClickListener(new View.OnClickListener() {
  146 + @Override
  147 + public void onClick(View view) {
  148 + InvitFriendActivity.startActivity(getContext());
  149 + }
  150 + });
146 } 151 }
147 152
148 public void initRoleDialog(RoleNetBean roleNetBean, FamilyRoleBean.FamilyRoleListBean familyRoleListBean) { 153 public void initRoleDialog(RoleNetBean roleNetBean, FamilyRoleBean.FamilyRoleListBean familyRoleListBean) {
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/model/XiaoJiaQrcode.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.model;
  2 +
  3 +public class XiaoJiaQrcode {
  4 +
  5 + /**
  6 + * familyId : 1111
  7 + * roleId : 1
  8 + * uuid : 2819ffac01134772ba38425a359c0594
  9 + */
  10 +
  11 + private String familyId;
  12 + private int roleId;
  13 + private String uuid;
  14 +
  15 + public String getFamilyId() {
  16 + return familyId;
  17 + }
  18 +
  19 + public void setFamilyId(String familyId) {
  20 + this.familyId = familyId;
  21 + }
  22 +
  23 + public int getRoleId() {
  24 + return roleId;
  25 + }
  26 +
  27 + public void setRoleId(int roleId) {
  28 + this.roleId = roleId;
  29 + }
  30 +
  31 + public String getUuid() {
  32 + return uuid;
  33 + }
  34 +
  35 + public void setUuid(String uuid) {
  36 + this.uuid = uuid;
  37 + }
  38 +}
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/AllDeviceActivity.java
@@ -12,6 +12,7 @@ import com.cnlive.libs.base.util.StatusBarUtil2; @@ -12,6 +12,7 @@ import com.cnlive.libs.base.util.StatusBarUtil2;
12 import com.cnlive.strike.xiaojiaspeaker.R; 12 import com.cnlive.strike.xiaojiaspeaker.R;
13 import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityAllDeviceBinding; 13 import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityAllDeviceBinding;
14 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment; 14 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment;
  15 +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.InvitFriendFragment;
15 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SearchDevicefragment; 16 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SearchDevicefragment;
16 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SelectWifiFragment; 17 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SelectWifiFragment;
17 18
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/ConnBluetoothSuccessActivity.java
@@ -8,15 +8,13 @@ import android.support.v7.app.AppCompatActivity; @@ -8,15 +8,13 @@ import android.support.v7.app.AppCompatActivity;
8 import android.os.Bundle; 8 import android.os.Bundle;
9 import android.view.View; 9 import android.view.View;
10 10
11 -import com.cnlive.libs.base.util.AlertUtil;  
12 import com.cnlive.libs.base.util.StatusBarUtil; 11 import com.cnlive.libs.base.util.StatusBarUtil;
13 import com.cnlive.libs.base.util.StatusBarUtil2; 12 import com.cnlive.libs.base.util.StatusBarUtil2;
14 import com.cnlive.strike.xiaojiaspeaker.R; 13 import com.cnlive.strike.xiaojiaspeaker.R;
15 -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo; 14 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
16 import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityConnBluetoothSuccessBinding; 15 import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityConnBluetoothSuccessBinding;
17 import com.daimajia.androidanimations.library.Techniques; 16 import com.daimajia.androidanimations.library.Techniques;
18 import com.daimajia.androidanimations.library.YoYo; 17 import com.daimajia.androidanimations.library.YoYo;
19 -import com.daimajia.androidanimations.library.zooming_exits.ZoomOutDownAnimator;  
20 18
21 /** 19 /**
22 * 音箱连接成功页面 20 * 音箱连接成功页面
@@ -36,7 +34,7 @@ public class ConnBluetoothSuccessActivity extends AppCompatActivity { @@ -36,7 +34,7 @@ public class ConnBluetoothSuccessActivity extends AppCompatActivity {
36 34
37 private void initView() { 35 private void initView() {
38 //判断是否显示礼物弹窗 36 //判断是否显示礼物弹窗
39 - boolean isShow = CommInfo.getIsShowConnGift(this); 37 + boolean isShow = XiaoJIaCommInfo.getIsShowConnGift(this);
40 if (isShow) { 38 if (isShow) {
41 showGift(); 39 showGift();
42 } else { 40 } else {
@@ -58,7 +56,7 @@ public class ConnBluetoothSuccessActivity extends AppCompatActivity { @@ -58,7 +56,7 @@ public class ConnBluetoothSuccessActivity extends AppCompatActivity {
58 .playOn(binding.llGift); 56 .playOn(binding.llGift);
59 binding.llGiftBlack.setVisibility(View.GONE); 57 binding.llGiftBlack.setVisibility(View.GONE);
60 //设置弹窗不在弹出 58 //设置弹窗不在弹出
61 - CommInfo.setIsShowConnGift(ConnBluetoothSuccessActivity.this, false); 59 + XiaoJIaCommInfo.setIsShowConnGift(ConnBluetoothSuccessActivity.this, false);
62 } 60 }
63 }); 61 });
64 } 62 }
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/InvitFriendActivity.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.ui.activity;
  2 +
  3 +import android.app.Activity;
  4 +import android.content.Intent;
  5 +import android.support.v7.app.AppCompatActivity;
  6 +import android.os.Bundle;
  7 +
  8 +import com.cnlive.strike.xiaojiaspeaker.R;
  9 +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment;
  10 +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.InvitFriendFragment;
  11 +
  12 +/**
  13 + * 二维码邀请加入
  14 + */
  15 +public class InvitFriendActivity extends AppCompatActivity {
  16 +
  17 + @Override
  18 + protected void onCreate(Bundle savedInstanceState) {
  19 + super.onCreate(savedInstanceState);
  20 + setContentView(R.layout.activity_invit_friend);
  21 + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, InvitFriendFragment.newInstance()).commitAllowingStateLoss();
  22 +
  23 + }
  24 +
  25 + public static void startActivity(Activity activity) {
  26 + Intent intent = new Intent(activity, InvitFriendActivity.class);
  27 + activity.startActivity(intent);
  28 + }
  29 +}
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/adapter/AllRoleDetailAdapter.java
@@ -28,6 +28,11 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter { @@ -28,6 +28,11 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
28 private SetRoleAdapter setRoleAdapter; 28 private SetRoleAdapter setRoleAdapter;
29 private Map<String, Boolean> allowSelectMap; 29 private Map<String, Boolean> allowSelectMap;
30 private String TAG = "AllRoleDetailAdapter"; 30 private String TAG = "AllRoleDetailAdapter";
  31 + private OnAllRoleClickListener onAllRoleClickListener;
  32 +
  33 + public void setOnAllRoleClickListener(OnAllRoleClickListener onAllRoleClickListener) {
  34 + this.onAllRoleClickListener = onAllRoleClickListener;
  35 + }
31 36
32 public AllRoleDetailAdapter(Context context, List<RoleNetBean.RoleListBean> allRoleList, SetRoleAdapter setRoleAdapter) { 37 public AllRoleDetailAdapter(Context context, List<RoleNetBean.RoleListBean> allRoleList, SetRoleAdapter setRoleAdapter) {
33 this.context = context; 38 this.context = context;
@@ -94,7 +99,6 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter { @@ -94,7 +99,6 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
94 if (view.getId() == R.id.ll_root) { 99 if (view.getId() == R.id.ll_root) {
95 int position = getAdapterPosition(); 100 int position = getAdapterPosition();
96 String selectId = setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).getSelectId(); 101 String selectId = setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).getSelectId();
97 - Log.e(TAG, "onClick: " + selectId);  
98 if (null == selectId) { 102 if (null == selectId) {
99 selectId = ""; 103 selectId = "";
100 } 104 }
@@ -114,6 +118,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter { @@ -114,6 +118,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
114 binding.checkBox.toggle(); 118 binding.checkBox.toggle();
115 //开始设置全局状态 119 //开始设置全局状态
116 if (binding.checkBox.isChecked()) { 120 if (binding.checkBox.isChecked()) {
  121 + if (null!=onAllRoleClickListener){
  122 + onAllRoleClickListener.onSelect(allRoleList.get(position).getId());
  123 + }
117 //添加到选中的集合 124 //添加到选中的集合
118 if (!selectId.equals(currentRoleId)) { 125 if (!selectId.equals(currentRoleId)) {
119 //重置状态 126 //重置状态
@@ -121,6 +128,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter { @@ -121,6 +128,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
121 setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).setSelectId(currentRoleId); 128 setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).setSelectId(currentRoleId);
122 } 129 }
123 } else { 130 } else {
  131 + if (null!=onAllRoleClickListener){
  132 + onAllRoleClickListener.onCancel();
  133 + }
124 setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).setSelectId(""); 134 setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).setSelectId("");
125 } 135 }
126 //设置全局不允许选择 136 //设置全局不允许选择
@@ -130,7 +140,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter { @@ -130,7 +140,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
130 } 140 }
131 } 141 }
132 142
133 - public interface onAllRoleClickListener {  
134 - void onClick(int position); 143 + public interface OnAllRoleClickListener {
  144 + void onCancel();
  145 +
  146 + void onSelect(int roleId);
135 } 147 }
136 } 148 }
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/adapter/SetRoleAdapter.java
@@ -27,6 +27,11 @@ public class SetRoleAdapter extends RecyclerView.Adapter { @@ -27,6 +27,11 @@ public class SetRoleAdapter extends RecyclerView.Adapter {
27 private List<Integer> initNotAllowRoleId;//服务器初始给的不允许点击的值 27 private List<Integer> initNotAllowRoleId;//服务器初始给的不允许点击的值
28 private int gridCount = -1; 28 private int gridCount = -1;
29 private int isShowItemUserInfo = View.VISIBLE; 29 private int isShowItemUserInfo = View.VISIBLE;
  30 + private OnSelectListener onSelectListener;
  31 +
  32 + public void setOnSelectListener(OnSelectListener onSelectListener) {
  33 + this.onSelectListener = onSelectListener;
  34 + }
30 35
31 public void setIsShowItemUserInfo(int isShowItemUserInfo) { 36 public void setIsShowItemUserInfo(int isShowItemUserInfo) {
32 this.isShowItemUserInfo = isShowItemUserInfo; 37 this.isShowItemUserInfo = isShowItemUserInfo;
@@ -74,19 +79,34 @@ public class SetRoleAdapter extends RecyclerView.Adapter { @@ -74,19 +79,34 @@ public class SetRoleAdapter extends RecyclerView.Adapter {
74 ItemListSetRoleBinding binding = ((MyViewHolder) viewHolder).getBinding(); 79 ItemListSetRoleBinding binding = ((MyViewHolder) viewHolder).getBinding();
75 binding.tvName.setText(roleInfoList.get(position).getUserName()); 80 binding.tvName.setText(roleInfoList.get(position).getUserName());
76 GlideApp.with(context).load(roleInfoList.get(position).getUserIcon()).placeholder(R.drawable.touxiang).into(binding.ivIcon); 81 GlideApp.with(context).load(roleInfoList.get(position).getUserIcon()).placeholder(R.drawable.touxiang).into(binding.ivIcon);
77 - if (isShowItemUserInfo==View.VISIBLE){  
78 - binding.llUserInfo.setVisibility(View.VISIBLE);  
79 - }else {  
80 - binding.llUserInfo.setVisibility(View.GONE);  
81 - } 82 + if (isShowItemUserInfo == View.VISIBLE) {
  83 + binding.llUserInfo.setVisibility(View.VISIBLE);
  84 + } else {
  85 + binding.llUserInfo.setVisibility(View.GONE);
  86 + }
82 //设置适配器 87 //设置适配器
83 adapter = new AllRoleDetailAdapter(context, roleInfoList.get(position).getRoleList(), this); 88 adapter = new AllRoleDetailAdapter(context, roleInfoList.get(position).getRoleList(), this);
84 if (-1 == gridCount) { 89 if (-1 == gridCount) {
85 binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, 4)); 90 binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, 4));
86 - }else { 91 + } else {
87 binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, gridCount)); 92 binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, gridCount));
88 } 93 }
89 binding.rvRoleList.setAdapter(adapter); 94 binding.rvRoleList.setAdapter(adapter);
  95 + adapter.setOnAllRoleClickListener(new AllRoleDetailAdapter.OnAllRoleClickListener() {
  96 + @Override
  97 + public void onCancel() {
  98 + if (null!=onSelectListener){
  99 + onSelectListener.onCancel();
  100 + }
  101 + }
  102 +
  103 + @Override
  104 + public void onSelect(int roleId) {
  105 + if (null!=onSelectListener){
  106 + onSelectListener.onSelect(roleId);
  107 + }
  108 + }
  109 + });
90 } 110 }
91 111
92 @Override 112 @Override
@@ -107,4 +127,10 @@ public class SetRoleAdapter extends RecyclerView.Adapter { @@ -107,4 +127,10 @@ public class SetRoleAdapter extends RecyclerView.Adapter {
107 //item点击事件 127 //item点击事件
108 } 128 }
109 } 129 }
  130 +
  131 + public interface OnSelectListener {
  132 + void onSelect(int roleId);
  133 +
  134 + void onCancel();
  135 + }
110 } 136 }
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/InvitFriendFragment.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.ui.fragment;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.annotation.Nullable;
  5 +import android.support.v4.content.ContextCompat;
  6 +import android.view.View;
  7 +
  8 +import com.cnlive.libs.base.frame.fragment.MvpBindingFragment;
  9 +import com.cnlive.libs.base.util.StatusBarUtil;
  10 +import com.cnlive.libs.base.util.StatusBarUtil2;
  11 +import com.cnlive.strike.xiaojiaspeaker.R;
  12 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
  13 +import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentInvitFriendBinding;
  14 +import com.cnlive.strike.xiaojiaspeaker.frame.presenter.InvitFriendPresenter;
  15 +import com.cnlive.strike.xiaojiaspeaker.frame.view.InvitFriendView;
  16 +
  17 +/**
  18 + * 二维码邀请加入
  19 + */
  20 +public class InvitFriendFragment extends MvpBindingFragment<InvitFriendView, InvitFriendPresenter, Object, FragmentInvitFriendBinding> {
  21 + public static InvitFriendFragment newInstance() {
  22 + InvitFriendFragment fragment = new InvitFriendFragment();
  23 + return fragment;
  24 + }
  25 +
  26 + @Override
  27 + protected int getLayoutId() {
  28 + return R.layout.fragment_invit_friend;
  29 + }
  30 +
  31 + @Override
  32 + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  33 + super.onViewCreated(view, savedInstanceState);
  34 + initTopBar();
  35 + getPresenter().getSetRoleList(getActivity(), XiaoJIaCommInfo.getUserId(getActivity()), XiaoJIaCommInfo.getFamilyId(getActivity()));
  36 + }
  37 +
  38 + private void initTopBar() {
  39 + StatusBarUtil.setStatusBarWrite(getActivity());
  40 + StatusBarUtil2.setColor(getActivity(), ContextCompat.getColor(getActivity(), R.color.white), 0);
  41 + if (null != binding) {
  42 + binding.topbar.setTitle("二维码邀请加入");
  43 + //设置返回按钮
  44 + binding.topbar.addLeftImageButton(R.drawable.icon_back, R.id.left_back).setOnClickListener(new View.OnClickListener() {
  45 + @Override
  46 + public void onClick(View view) {
  47 + getActivity().finish();
  48 + }
  49 + });
  50 +
  51 + }
  52 + }
  53 +}
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/SetFriendsRoleFragment.java
@@ -9,7 +9,7 @@ import com.cnlive.libs.base.frame.fragment.MvpBindingFragment; @@ -9,7 +9,7 @@ import com.cnlive.libs.base.frame.fragment.MvpBindingFragment;
9 import com.cnlive.libs.base.util.StatusBarUtil; 9 import com.cnlive.libs.base.util.StatusBarUtil;
10 import com.cnlive.libs.base.util.StatusBarUtil2; 10 import com.cnlive.libs.base.util.StatusBarUtil2;
11 import com.cnlive.strike.xiaojiaspeaker.R; 11 import com.cnlive.strike.xiaojiaspeaker.R;
12 -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo; 12 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
13 import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentSetFriendRoleBinding; 13 import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentSetFriendRoleBinding;
14 import com.cnlive.strike.xiaojiaspeaker.frame.presenter.SetFriendsRolePresenter; 14 import com.cnlive.strike.xiaojiaspeaker.frame.presenter.SetFriendsRolePresenter;
15 import com.cnlive.strike.xiaojiaspeaker.frame.view.SetFriendsRoleView; 15 import com.cnlive.strike.xiaojiaspeaker.frame.view.SetFriendsRoleView;
@@ -46,7 +46,7 @@ public class SetFriendsRoleFragment extends MvpBindingFragment&lt;SetFriendsRoleVie @@ -46,7 +46,7 @@ public class SetFriendsRoleFragment extends MvpBindingFragment&lt;SetFriendsRoleVie
46 initTopBar(); 46 initTopBar();
47 if (null != getArguments()) { 47 if (null != getArguments()) {
48 selectUid = getArguments().getString("selectUid"); 48 selectUid = getArguments().getString("selectUid");
49 - getPresenter().getSetRoleList(getActivity(), selectUid, CommInfo.getFamilyId(getActivity())); 49 + getPresenter().getSetRoleList(getActivity(), selectUid, XiaoJIaCommInfo.getFamilyId(getActivity()));
50 } else { 50 } else {
51 getActivity().finish(); 51 getActivity().finish();
52 } 52 }
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/UserManagerFragment.java
@@ -10,8 +10,6 @@ import com.cnlive.libs.base.frame.fragment.MvpBindingFragment; @@ -10,8 +10,6 @@ import com.cnlive.libs.base.frame.fragment.MvpBindingFragment;
10 import com.cnlive.libs.base.util.StatusBarUtil; 10 import com.cnlive.libs.base.util.StatusBarUtil;
11 import com.cnlive.libs.base.util.StatusBarUtil2; 11 import com.cnlive.libs.base.util.StatusBarUtil2;
12 import com.cnlive.strike.xiaojiaspeaker.R; 12 import com.cnlive.strike.xiaojiaspeaker.R;
13 -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;  
14 -import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentDeviceManagerBinding;  
15 import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentUserManagerBinding; 13 import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentUserManagerBinding;
16 import com.cnlive.strike.xiaojiaspeaker.frame.presenter.UserManagerPresenter; 14 import com.cnlive.strike.xiaojiaspeaker.frame.presenter.UserManagerPresenter;
17 import com.cnlive.strike.xiaojiaspeaker.frame.view.UserManagerView; 15 import com.cnlive.strike.xiaojiaspeaker.frame.view.UserManagerView;
@@ -43,7 +41,7 @@ public class UserManagerFragment extends MvpBindingFragment&lt;UserManagerView, Use @@ -43,7 +41,7 @@ public class UserManagerFragment extends MvpBindingFragment&lt;UserManagerView, Use
43 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 41 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
44 super.onViewCreated(view, savedInstanceState); 42 super.onViewCreated(view, savedInstanceState);
45 initTopBar(); 43 initTopBar();
46 -// getPresenter().getFamilyRole(getActivity(), "123456", CommInfo.getFamilyId(getActivity())); 44 +// getPresenter().getFamilyRole(getActivity(), "123456", XiaoJIaCommInfo.getFamilyId(getActivity()));
47 if (null != getMvpView()) { 45 if (null != getMvpView()) {
48 getMvpView().initPopView(); 46 getMvpView().initPopView();
49 getMvpView().initView(null); 47 getMvpView().initView(null);
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/util/DensityUtil.java 0 → 100644
  1 +package com.cnlive.strike.xiaojiaspeaker.util;
  2 +
  3 +import android.content.Context;
  4 +import android.content.res.Resources;
  5 +import android.util.DisplayMetrics;
  6 +import android.util.TypedValue;
  7 +import android.view.WindowManager;
  8 +
  9 +/**
  10 + * 像素密度计算工具
  11 + */
  12 +public class DensityUtil {
  13 + private DensityUtil() {
  14 + throw new UnsupportedOperationException("cannot be instantiated");
  15 + }
  16 +
  17 + public static int dp2px(Context context, float dpVal) {
  18 + return (int) TypedValue.applyDimension(1, dpVal, context.getResources().getDisplayMetrics());
  19 + }
  20 +
  21 + public static int sp2px(Context context, float spVal) {
  22 + return (int)TypedValue.applyDimension(2, spVal, context.getResources().getDisplayMetrics());
  23 + }
  24 +
  25 + public static float px2dp(Context context, float pxVal) {
  26 + float scale = context.getResources().getDisplayMetrics().density;
  27 + return pxVal / scale;
  28 + }
  29 +
  30 + public static float px2sp(Context context, float pxVal) {
  31 + return pxVal / context.getResources().getDisplayMetrics().scaledDensity;
  32 + }
  33 +
  34 + public static int getScreenWidth(Context context) {
  35 + DisplayMetrics metric = new DisplayMetrics();
  36 + WindowManager windowManager = (WindowManager)context.getApplicationContext().getSystemService("window");
  37 + if (windowManager != null) {
  38 + windowManager.getDefaultDisplay().getMetrics(metric);
  39 + }
  40 +
  41 + return metric.widthPixels;
  42 + }
  43 +
  44 + public static int getScreenHeight(Context context) {
  45 + DisplayMetrics metric = new DisplayMetrics();
  46 + WindowManager windowManager = (WindowManager)context.getApplicationContext().getSystemService("window");
  47 + if (windowManager != null) {
  48 + windowManager.getDefaultDisplay().getMetrics(metric);
  49 + }
  50 +
  51 + return metric.heightPixels;
  52 + }
  53 +}
0 \ No newline at end of file 54 \ No newline at end of file
module_xiaojiaSoundBox/src/main/res/drawable/shape_green_circle.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <corners android:radius="100dp" />
  4 + <solid android:color="#199F18" />
  5 +</shape>
0 \ No newline at end of file 6 \ No newline at end of file
module_xiaojiaSoundBox/src/main/res/layout/activity_conn_bluetooth_success.xml
@@ -46,16 +46,29 @@ @@ -46,16 +46,29 @@
46 android:layout_height="0dp" 46 android:layout_height="0dp"
47 android:layout_weight="1" 47 android:layout_weight="1"
48 android:orientation="vertical"> 48 android:orientation="vertical">
49 -  
50 - <TextView  
51 - android:layout_width="wrap_content"  
52 - android:layout_height="wrap_content" 49 + <Button
  50 + android:id="@+id/btn_next"
  51 + android:layout_width="250dp"
  52 + android:layout_height="40dp"
  53 + android:layout_alignParentBottom="true"
  54 + android:layout_centerHorizontal="true"
53 android:layout_gravity="center_horizontal" 55 android:layout_gravity="center_horizontal"
54 - android:text="@string/to_sound_say_tip"  
55 - android:textColor="@color/color_999999" 56 + android:background="@drawable/selector_btn_green"
  57 + android:text="邀请使用者"
  58 + android:textColor="@color/white"
56 android:textSize="16sp" 59 android:textSize="16sp"
57 android:textStyle="bold" /> 60 android:textStyle="bold" />
58 61
  62 + <Button
  63 + android:layout_width="250dp"
  64 + android:layout_height="40dp"
  65 + android:background="@drawable/shape_green_stroke"
  66 + android:layout_gravity="center_horizontal"
  67 + android:layout_marginTop="30dp"
  68 + android:textSize="18sp"
  69 + android:text="完成"
  70 + android:textColor="@color/btn_green"/>
  71 +
59 <TextView 72 <TextView
60 android:layout_width="216dp" 73 android:layout_width="216dp"
61 android:layout_height="wrap_content" 74 android:layout_height="wrap_content"
@@ -120,6 +133,8 @@ @@ -120,6 +133,8 @@
120 android:id="@+id/ll_gift_black" 133 android:id="@+id/ll_gift_black"
121 android:layout_width="match_parent" 134 android:layout_width="match_parent"
122 android:layout_height="match_parent" 135 android:layout_height="match_parent"
  136 + android:orientation="vertical"
  137 + android:visibility="gone"
123 android:background="#80000000"></LinearLayout> 138 android:background="#80000000"></LinearLayout>
124 139
125 <LinearLayout 140 <LinearLayout
@@ -128,6 +143,7 @@ @@ -128,6 +143,7 @@
128 android:layout_height="match_parent" 143 android:layout_height="match_parent"
129 android:clickable="true" 144 android:clickable="true"
130 android:gravity="center" 145 android:gravity="center"
  146 + android:visibility="gone"
131 android:orientation="vertical"> 147 android:orientation="vertical">
132 148
133 <ImageView 149 <ImageView
module_xiaojiaSoundBox/src/main/res/layout/activity_invit_friend.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layout>
  3 +
  4 + <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  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="match_parent"
  9 + android:orientation="vertical"
  10 + tools:context=".ui.activity.AllDeviceActivity">
  11 +
  12 + <RelativeLayout
  13 + android:id="@+id/fragment_container"
  14 + android:layout_width="match_parent"
  15 + android:layout_height="match_parent"></RelativeLayout>
  16 +
  17 + </RelativeLayout>
  18 +</layout>
0 \ No newline at end of file 19 \ No newline at end of file
module_xiaojiaSoundBox/src/main/res/layout/dialog_edit_role.xml
@@ -57,8 +57,7 @@ @@ -57,8 +57,7 @@
57 android:id="@+id/rv_role" 57 android:id="@+id/rv_role"
58 android:layout_width="match_parent" 58 android:layout_width="match_parent"
59 android:layout_height="wrap_content" 59 android:layout_height="wrap_content"
60 - android:minHeight="50dp"  
61 - android:paddingLeft="10dp" /> 60 + android:minHeight="50dp" />
62 61
63 <View 62 <View
64 android:layout_width="match_parent" 63 android:layout_width="match_parent"
module_xiaojiaSoundBox/src/main/res/layout/fragment_invit_friend.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<layout>
  3 +
  4 + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + android:background="@color/white"
  8 + android:orientation="vertical">
  9 +
  10 + <com.qmuiteam.qmui.widget.QMUITopBar
  11 + android:id="@+id/topbar"
  12 + android:layout_width="match_parent"
  13 + android:layout_height="?attr/qmui_topbar_height" />
  14 +
  15 + <FrameLayout
  16 + android:layout_width="match_parent"
  17 + android:layout_height="match_parent">
  18 +
  19 + <LinearLayout
  20 + android:layout_width="match_parent"
  21 + android:layout_height="match_parent"
  22 + android:orientation="vertical">
  23 +
  24 +
  25 + <!--1-->
  26 + <LinearLayout
  27 + android:layout_width="match_parent"
  28 + android:layout_height="wrap_content"
  29 + android:orientation="vertical">
  30 +
  31 + <TextView
  32 + android:layout_width="wrap_content"
  33 + android:layout_height="wrap_content"
  34 + android:layout_marginLeft="10dp"
  35 + android:layout_marginTop="10dp"
  36 + android:text="选择家人角色"
  37 + android:textColor="@color/color_282828"
  38 + android:textSize="16sp"
  39 + android:textStyle="bold" />
  40 +
  41 + <android.support.v7.widget.RecyclerView
  42 + android:id="@+id/rv_role"
  43 + android:layout_width="match_parent"
  44 + android:layout_height="wrap_content"
  45 + android:minHeight="40dp"
  46 + android:overScrollMode="never" />
  47 + </LinearLayout>
  48 + <!--2-->
  49 + <LinearLayout
  50 + android:layout_width="match_parent"
  51 + android:layout_height="0dp"
  52 + android:layout_weight="1"
  53 + android:orientation="vertical">
  54 +
  55 + <FrameLayout
  56 + android:layout_width="wrap_content"
  57 + android:layout_height="wrap_content"
  58 + android:layout_gravity="center_horizontal">
  59 +
  60 + <ImageView
  61 + android:id="@+id/iv_qrcode"
  62 + android:layout_width="200dp"
  63 + android:layout_height="200dp" />
  64 +
  65 + <LinearLayout
  66 + android:id="@+id/ll_no_qrcode"
  67 + android:layout_width="200dp"
  68 + android:layout_height="200dp"
  69 + android:background="#E1F9D7"
  70 + android:gravity="center"
  71 + android:orientation="vertical">
  72 +
  73 + <TextView
  74 + android:layout_width="wrap_content"
  75 + android:layout_height="wrap_content"
  76 + android:text="选择家人角色"
  77 + android:textColor="@color/color_199F18"
  78 + android:textSize="18sp"
  79 + android:textStyle="bold" />
  80 +
  81 + <TextView
  82 + android:layout_width="wrap_content"
  83 + android:layout_height="wrap_content"
  84 + android:layout_marginTop="20dp"
  85 + android:text="生成二维码"
  86 + android:textColor="@color/color_199F18"
  87 + android:textSize="18sp"
  88 + android:textStyle="bold" />
  89 + </LinearLayout>
  90 + </FrameLayout>
  91 + </LinearLayout>
  92 + <!--3-->
  93 + <LinearLayout
  94 + android:layout_width="match_parent"
  95 + android:layout_height="0dp"
  96 + android:layout_weight="1"
  97 + android:orientation="vertical">
  98 +
  99 + <TextView
  100 + android:layout_width="wrap_content"
  101 + android:layout_height="wrap_content"
  102 + android:layout_gravity="center_horizontal"
  103 + android:layout_marginTop="20dp"
  104 + android:text="请对方使用网家家“扫一扫”绑定"
  105 + android:textColor="@color/color_282828"
  106 + android:textSize="18sp"
  107 + android:textStyle="bold" />
  108 +
  109 + <LinearLayout
  110 + android:layout_width="match_parent"
  111 + android:layout_height="wrap_content"
  112 + android:layout_marginTop="20dp"
  113 + android:gravity="center">
  114 +
  115 + <TextView
  116 + android:layout_width="15dp"
  117 + android:layout_height="15dp"
  118 + android:background="@drawable/shape_green_circle"
  119 + android:gravity="center"
  120 + android:text="1"
  121 + android:textColor="@color/white"
  122 + android:textSize="11sp"
  123 + android:textStyle="bold" />
  124 +
  125 + <TextView
  126 + android:layout_width="wrap_content"
  127 + android:layout_height="wrap_content"
  128 + android:layout_marginLeft="5dp"
  129 + android:layout_marginRight="5dp"
  130 + android:text="下载网家家 >"
  131 + android:textColor="@color/color_282828"
  132 + android:textSize="12sp"
  133 + android:textStyle="bold" />
  134 +
  135 + <TextView
  136 + android:layout_width="15dp"
  137 + android:layout_height="15dp"
  138 + android:background="@drawable/shape_green_circle"
  139 + android:gravity="center"
  140 + android:text="2"
  141 + android:textColor="@color/white"
  142 + android:textSize="11sp"
  143 + android:textStyle="bold" />
  144 +
  145 + <TextView
  146 + android:layout_width="wrap_content"
  147 + android:layout_height="wrap_content"
  148 + android:layout_marginLeft="5dp"
  149 + android:layout_marginRight="5dp"
  150 + android:text="注册/登录 >"
  151 + android:textColor="@color/color_282828"
  152 + android:textSize="12sp"
  153 + android:textStyle="bold" />
  154 +
  155 + <TextView
  156 + android:layout_width="15dp"
  157 + android:layout_height="15dp"
  158 + android:background="@drawable/shape_green_circle"
  159 + android:gravity="center"
  160 + android:text="3"
  161 + android:textColor="@color/white"
  162 + android:textSize="11sp"
  163 + android:textStyle="bold" />
  164 +
  165 + <TextView
  166 + android:layout_width="wrap_content"
  167 + android:layout_height="wrap_content"
  168 + android:layout_marginLeft="5dp"
  169 + android:text="扫码绑定"
  170 + android:textColor="@color/color_282828"
  171 + android:textSize="12sp"
  172 + android:textStyle="bold" />
  173 + </LinearLayout>
  174 + <!-- -->
  175 + <Button
  176 + android:id="@+id/btn_share"
  177 + android:layout_width="match_parent"
  178 + android:layout_height="40dp"
  179 + android:layout_alignParentBottom="true"
  180 + android:layout_centerHorizontal="true"
  181 + android:layout_marginLeft="20dp"
  182 + android:layout_marginTop="30dp"
  183 + android:layout_marginRight="20dp"
  184 + android:background="@drawable/selector_btn_green"
  185 + android:text="保存并分享给家人"
  186 + android:textColor="@color/white"
  187 + android:textSize="16sp"
  188 + android:textStyle="bold" />
  189 + </LinearLayout>
  190 + </LinearLayout>
  191 +
  192 + <com.cnlive.strike.ui.widget.UIEmptyView
  193 + android:id="@+id/empty_layout"
  194 + android:layout_width="match_parent"
  195 + android:layout_height="match_parent"
  196 + android:background="@color/color_fff"
  197 + android:visibility="gone" />
  198 + </FrameLayout><!-- -->
  199 + </LinearLayout>
  200 +</layout>
0 \ No newline at end of file 201 \ No newline at end of file
module_xiaojiaSoundBox/src/main/res/layout/item_list_set_role_check_box.xml
@@ -3,9 +3,10 @@ @@ -3,9 +3,10 @@
3 3
4 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
5 android:id="@+id/ll_root" 5 android:id="@+id/ll_root"
6 - android:layout_width="wrap_content" 6 + android:layout_width="match_parent"
7 android:layout_height="wrap_content" 7 android:layout_height="wrap_content"
8 android:clickable="true" 8 android:clickable="true"
  9 + android:gravity="center"
9 android:orientation="vertical"> 10 android:orientation="vertical">
10 11
11 <CheckBox 12 <CheckBox
module_xiaojiaSoundBox/src/main/res/values/colors.xml
@@ -39,4 +39,5 @@ @@ -39,4 +39,5 @@
39 <color name="btn_close">#D3D3D3</color> 39 <color name="btn_close">#D3D3D3</color>
40 <color name="color_73DC41">#73DC41</color> 40 <color name="color_73DC41">#73DC41</color>
41 <color name="color_B2B2B2">#B2B2B2</color> 41 <color name="color_B2B2B2">#B2B2B2</color>
  42 + <color name="color_199F18">#199F18</color>
42 </resources> 43 </resources>