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 3 package="com.cnlive.strike.speaker">
4 4  
5 5 <application
  6 + android:name="com.cnlive.strike.xiaojiaspeaker.MyApp"
6 7 android:allowBackup="true"
7 8 android:icon="@mipmap/ic_launcher"
8 9 android:label="@string/app_name"
  10 + android:networkSecurityConfig="@xml/network_security_config"
9 11 android:roundIcon="@mipmap/ic_launcher_round"
10 12 android:supportsRtl="true"
11   - android:networkSecurityConfig="@xml/network_security_config"
12 13 android:theme="@style/AppTheme">
13 14 <activity android:name="com.cnlive.strike.xiaojiaspeaker.ToolBarTestActivity"></activity>
14 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 5 import android.os.Bundle;
6 6 import android.support.v7.app.AppCompatActivity;
7 7  
  8 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
8 9 import com.cnlive.strike.xiaojiaspeaker.ui.activity.AllDeviceActivity;
9 10 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
10 11 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BluetoothConnActivity;
... ... @@ -12,6 +13,7 @@ import com.cnlive.strike.xiaojiaspeaker.ui.activity.ConnBluetoothSuccessActivity
12 13 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceInstructionActivity;
13 14 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceManagerActivity;
14 15 import com.cnlive.strike.xiaojiaspeaker.ui.activity.FirmwareUpdateActivity;
  16 +import com.cnlive.strike.xiaojiaspeaker.ui.activity.InvitFriendActivity;
15 17 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SearchDeviceActivity;
16 18 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectIMFriendActivity;
17 19 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectWifiActivity;
... ... @@ -19,10 +21,12 @@ import com.cnlive.strike.xiaojiaspeaker.ui.activity.SpeakerMainActivity;
19 21  
20 22 public class MainActivity extends AppCompatActivity {
21 23 private static final String TAG = "MainActivity";
  24 +
22 25 @Override
23 26 protected void onCreate(Bundle savedInstanceState) {
24 27 super.onCreate(savedInstanceState);
25 28 setContentView(R.layout.activity_speaker_main);
  29 + XiaoJIaCommInfo.setUserId(this, "10510277");
26 30 // startActivity(new Intent(MainActivity.this, ToolBarTestActivity.class));
27 31 // startActivity(new Intent(MainActivity.this, BluetoothConnActivity.class));
28 32 // startActivity(new Intent(MainActivity.this, BlueToothStep1Activity.class));
... ... @@ -34,6 +38,9 @@ public class MainActivity extends AppCompatActivity {
34 38 // startActivity(new Intent(MainActivity.this, SelectWifiActivity.class));
35 39 // startActivity(new Intent(MainActivity.this, ToolBarTestActivity.class));
36 40 // startActivity(new Intent(MainActivity.this, SelectIMFriendActivity.class));
  41 +// startActivity(new Intent(MainActivity.this, InvitFriendActivity.class));
  42 +
  43 +
37 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 2  
3 3 import android.app.Application;
4 4  
  5 +import com.alibaba.android.arouter.launcher.ARouter;
5 6 import com.cnlive.libs.base.application.AppConfig;
6 7 import com.cnlive.strike.speaker.BuildConfig;
7 8  
... ... @@ -10,13 +11,28 @@ public class MyApp extends Application {
10 11 @Override
11 12 public void onCreate() {
12 13 super.onCreate();
  14 + initARouter();
13 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 17 <uses-permission android:name="android.permission.INTERNET" />
18 18  
19 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 22 <activity android:name=".ui.activity.ChangeDeviceNameActivity" />
22 23 <activity android:name=".ui.activity.DeviceDetailActivity" />
23 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 9 *
10 10 * @author ys
11 11 */
12   -public class CommInfo {
  12 +public class XiaoJIaCommInfo {
13 13 //用户ID
14 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 2  
3 3 import android.app.Activity;
4 4 import android.graphics.Color;
5   -import android.support.design.widget.BottomSheetBehavior;
6   -import android.support.design.widget.BottomSheetDialog;
7 5 import android.support.v7.widget.LinearLayoutManager;
8 6 import android.util.Log;
9   -import android.view.LayoutInflater;
10 7 import android.view.View;
11 8  
12 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 11 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyListBean;
16 12 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
17 13 import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceDetailActivity;
18   -import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceManagerActivity;
19 14 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.AllDeviceAdapter;
20 15 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment;
21 16 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu;
22 17 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo;
23 18 import com.hannesdorfmann.mosby3.mvp.MvpView;
24   -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
25 19  
26 20 import java.util.ArrayList;
27 21 import java.util.List;
... ... @@ -58,11 +52,11 @@ public class AllDeviceFragmentView implements MvpView {
58 52 Log.e(TAG, "getId: " + usersBean.getUserId());
59 53 Log.e(TAG, "getToken: " + usersBean.getToken());
60 54 //存储家庭id
61   - CommInfo.setFamilyId(getContext(), usersBean.getId());
  55 + XiaoJIaCommInfo.setFamilyId(getContext(), usersBean.getId());
62 56 //存储移动id(用于配网)
63   - CommInfo.setCMCCId(getContext(), usersBean.getUserId());
  57 + XiaoJIaCommInfo.setCMCCId(getContext(), usersBean.getUserId());
64 58 //存储移动token
65   - CommInfo.setToken(getContext(), usersBean.getToken());
  59 + XiaoJIaCommInfo.setToken(getContext(), usersBean.getToken());
66 60 }
67 61 //存储移动id
68 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 5 import android.graphics.Typeface;
6 6 import android.net.wifi.ScanResult;
7 7 import android.os.Handler;
8   -import android.support.annotation.NonNull;
9 8 import android.support.v4.content.ContextCompat;
10 9 import android.support.v7.widget.LinearLayoutManager;
11 10 import android.text.TextUtils;
... ... @@ -20,15 +19,13 @@ import com.clj.fastble.data.BleDevice;
20 19 import com.clj.fastble.exception.BleException;
21 20 import com.cnlive.libs.base.util.AlertUtil;
22 21 import com.cnlive.strike.xiaojiaspeaker.R;
23   -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;
  22 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
24 23 import com.cnlive.strike.xiaojiaspeaker.constants.BlufiConstants;
25   -import com.cnlive.strike.xiaojiaspeaker.netWork.bean.ConfigDeviceNetParam;
26 24 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.WifiRecycleAdapter;
27 25 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SelectWifiFragment;
28 26 import com.cnlive.strike.xiaojiaspeaker.ui.widget.TipDialog;
29 27 import com.cnlive.strike.xiaojiaspeaker.ui.widget.WifiPwdDialog;
30 28 import com.cnlive.strike.xiaojiaspeaker.util.BlueToothUtil;
31   -import com.cnlive.strike.xiaojiaspeaker.util.CommonUtils;
32 29 import com.cnlive.strike.xiaojiaspeaker.util.QMUITipDialogUtil;
33 30 import com.cnlive.strike.xiaojiaspeaker.util.WifiUtils;
34 31 import com.hannesdorfmann.mosby3.mvp.MvpView;
... ... @@ -62,8 +59,8 @@ public class SelectWifiFragmentView implements MvpView {
62 59 }
63 60  
64 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 64 this.bleDevice = bleDevice;
68 65 showLoading();
69 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 7 import android.view.View;
8 8  
9 9 import com.cnlive.strike.xiaojiaspeaker.R;
10   -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;
  10 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
11 11 import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo;
12 12 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean;
13 13 import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean;
14 14 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
  15 +import com.cnlive.strike.xiaojiaspeaker.ui.activity.InvitFriendActivity;
15 16 import com.cnlive.strike.xiaojiaspeaker.ui.activity.SelectIMFriendActivity;
16   -import com.cnlive.strike.xiaojiaspeaker.ui.adapter.SetRoleAdapter;
17 17 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.UserManagerAdapter;
18 18 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.UserManagerFragment;
19 19 import com.cnlive.strike.xiaojiaspeaker.ui.widget.EditRoleDialog;
20 20 import com.cnlive.strike.xiaojiaspeaker.ui.widget.SelectDialog;
21   -import com.cnlive.strike.xiaojiaspeaker.ui.widget.TipDialog;
22 21 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu;
23 22 import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo;
24 23 import com.cnlive.strike.xiaojiaspeaker.util.GsonUtil;
25   -import com.cnlive.strike.xiaojiaspeaker.util.utilcode.util.GsonUtils;
26 24 import com.hannesdorfmann.mosby3.mvp.MvpView;
27 25  
28 26 import java.util.ArrayList;
... ... @@ -109,7 +107,7 @@ public class UserManagerView implements MvpView {
109 107 adapter.setOnEditClickListener(new UserManagerAdapter.OnEditClickListener() {
110 108 @Override
111 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 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 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 12 import com.cnlive.strike.xiaojiaspeaker.R;
13 13 import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityAllDeviceBinding;
14 14 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment;
  15 +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.InvitFriendFragment;
15 16 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SearchDevicefragment;
16 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 8 import android.os.Bundle;
9 9 import android.view.View;
10 10  
11   -import com.cnlive.libs.base.util.AlertUtil;
12 11 import com.cnlive.libs.base.util.StatusBarUtil;
13 12 import com.cnlive.libs.base.util.StatusBarUtil2;
14 13 import com.cnlive.strike.xiaojiaspeaker.R;
15   -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;
  14 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
16 15 import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityConnBluetoothSuccessBinding;
17 16 import com.daimajia.androidanimations.library.Techniques;
18 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 34  
37 35 private void initView() {
38 36 //判断是否显示礼物弹窗
39   - boolean isShow = CommInfo.getIsShowConnGift(this);
  37 + boolean isShow = XiaoJIaCommInfo.getIsShowConnGift(this);
40 38 if (isShow) {
41 39 showGift();
42 40 } else {
... ... @@ -58,7 +56,7 @@ public class ConnBluetoothSuccessActivity extends AppCompatActivity {
58 56 .playOn(binding.llGift);
59 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 28 private SetRoleAdapter setRoleAdapter;
29 29 private Map<String, Boolean> allowSelectMap;
30 30 private String TAG = "AllRoleDetailAdapter";
  31 + private OnAllRoleClickListener onAllRoleClickListener;
  32 +
  33 + public void setOnAllRoleClickListener(OnAllRoleClickListener onAllRoleClickListener) {
  34 + this.onAllRoleClickListener = onAllRoleClickListener;
  35 + }
31 36  
32 37 public AllRoleDetailAdapter(Context context, List<RoleNetBean.RoleListBean> allRoleList, SetRoleAdapter setRoleAdapter) {
33 38 this.context = context;
... ... @@ -94,7 +99,6 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
94 99 if (view.getId() == R.id.ll_root) {
95 100 int position = getAdapterPosition();
96 101 String selectId = setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).getSelectId();
97   - Log.e(TAG, "onClick: " + selectId);
98 102 if (null == selectId) {
99 103 selectId = "";
100 104 }
... ... @@ -114,6 +118,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
114 118 binding.checkBox.toggle();
115 119 //开始设置全局状态
116 120 if (binding.checkBox.isChecked()) {
  121 + if (null!=onAllRoleClickListener){
  122 + onAllRoleClickListener.onSelect(allRoleList.get(position).getId());
  123 + }
117 124 //添加到选中的集合
118 125 if (!selectId.equals(currentRoleId)) {
119 126 //重置状态
... ... @@ -121,6 +128,9 @@ public class AllRoleDetailAdapter extends RecyclerView.Adapter {
121 128 setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).setSelectId(currentRoleId);
122 129 }
123 130 } else {
  131 + if (null!=onAllRoleClickListener){
  132 + onAllRoleClickListener.onCancel();
  133 + }
124 134 setRoleAdapter.getRoleInfoList().get(allRoleList.get(position).getParentPosition()).setSelectId("");
125 135 }
126 136 //设置全局不允许选择
... ... @@ -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 27 private List<Integer> initNotAllowRoleId;//服务器初始给的不允许点击的值
28 28 private int gridCount = -1;
29 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 36 public void setIsShowItemUserInfo(int isShowItemUserInfo) {
32 37 this.isShowItemUserInfo = isShowItemUserInfo;
... ... @@ -74,19 +79,34 @@ public class SetRoleAdapter extends RecyclerView.Adapter {
74 79 ItemListSetRoleBinding binding = ((MyViewHolder) viewHolder).getBinding();
75 80 binding.tvName.setText(roleInfoList.get(position).getUserName());
76 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 88 adapter = new AllRoleDetailAdapter(context, roleInfoList.get(position).getRoleList(), this);
84 89 if (-1 == gridCount) {
85 90 binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, 4));
86   - }else {
  91 + } else {
87 92 binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, gridCount));
88 93 }
89 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 112 @Override
... ... @@ -107,4 +127,10 @@ public class SetRoleAdapter extends RecyclerView.Adapter {
107 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 9 import com.cnlive.libs.base.util.StatusBarUtil;
10 10 import com.cnlive.libs.base.util.StatusBarUtil2;
11 11 import com.cnlive.strike.xiaojiaspeaker.R;
12   -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;
  12 +import com.cnlive.strike.xiaojiaspeaker.commonInfo.XiaoJIaCommInfo;
13 13 import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentSetFriendRoleBinding;
14 14 import com.cnlive.strike.xiaojiaspeaker.frame.presenter.SetFriendsRolePresenter;
15 15 import com.cnlive.strike.xiaojiaspeaker.frame.view.SetFriendsRoleView;
... ... @@ -46,7 +46,7 @@ public class SetFriendsRoleFragment extends MvpBindingFragment&lt;SetFriendsRoleVie
46 46 initTopBar();
47 47 if (null != getArguments()) {
48 48 selectUid = getArguments().getString("selectUid");
49   - getPresenter().getSetRoleList(getActivity(), selectUid, CommInfo.getFamilyId(getActivity()));
  49 + getPresenter().getSetRoleList(getActivity(), selectUid, XiaoJIaCommInfo.getFamilyId(getActivity()));
50 50 } else {
51 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 10 import com.cnlive.libs.base.util.StatusBarUtil;
11 11 import com.cnlive.libs.base.util.StatusBarUtil2;
12 12 import com.cnlive.strike.xiaojiaspeaker.R;
13   -import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo;
14   -import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentDeviceManagerBinding;
15 13 import com.cnlive.strike.xiaojiaspeaker.databinding.FragmentUserManagerBinding;
16 14 import com.cnlive.strike.xiaojiaspeaker.frame.presenter.UserManagerPresenter;
17 15 import com.cnlive.strike.xiaojiaspeaker.frame.view.UserManagerView;
... ... @@ -43,7 +41,7 @@ public class UserManagerFragment extends MvpBindingFragment&lt;UserManagerView, Use
43 41 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
44 42 super.onViewCreated(view, savedInstanceState);
45 43 initTopBar();
46   -// getPresenter().getFamilyRole(getActivity(), "123456", CommInfo.getFamilyId(getActivity()));
  44 +// getPresenter().getFamilyRole(getActivity(), "123456", XiaoJIaCommInfo.getFamilyId(getActivity()));
47 45 if (null != getMvpView()) {
48 46 getMvpView().initPopView();
49 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 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 6 \ No newline at end of file
... ...
module_xiaojiaSoundBox/src/main/res/layout/activity_conn_bluetooth_success.xml
... ... @@ -46,16 +46,29 @@
46 46 android:layout_height="0dp"
47 47 android:layout_weight="1"
48 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 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 59 android:textSize="16sp"
57 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 72 <TextView
60 73 android:layout_width="216dp"
61 74 android:layout_height="wrap_content"
... ... @@ -120,6 +133,8 @@
120 133 android:id="@+id/ll_gift_black"
121 134 android:layout_width="match_parent"
122 135 android:layout_height="match_parent"
  136 + android:orientation="vertical"
  137 + android:visibility="gone"
123 138 android:background="#80000000"></LinearLayout>
124 139  
125 140 <LinearLayout
... ... @@ -128,6 +143,7 @@
128 143 android:layout_height="match_parent"
129 144 android:clickable="true"
130 145 android:gravity="center"
  146 + android:visibility="gone"
131 147 android:orientation="vertical">
132 148  
133 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 19 \ No newline at end of file
... ...
module_xiaojiaSoundBox/src/main/res/layout/dialog_edit_role.xml
... ... @@ -57,8 +57,7 @@
57 57 android:id="@+id/rv_role"
58 58 android:layout_width="match_parent"
59 59 android:layout_height="wrap_content"
60   - android:minHeight="50dp"
61   - android:paddingLeft="10dp" />
  60 + android:minHeight="50dp" />
62 61  
63 62 <View
64 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 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 3  
4 4 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
5 5 android:id="@+id/ll_root"
6   - android:layout_width="wrap_content"
  6 + android:layout_width="match_parent"
7 7 android:layout_height="wrap_content"
8 8 android:clickable="true"
  9 + android:gravity="center"
9 10 android:orientation="vertical">
10 11  
11 12 <CheckBox
... ...
module_xiaojiaSoundBox/src/main/res/values/colors.xml
... ... @@ -39,4 +39,5 @@
39 39 <color name="btn_close">#D3D3D3</color>
40 40 <color name="color_73DC41">#73DC41</color>
41 41 <color name="color_B2B2B2">#B2B2B2</color>
  42 + <color name="color_199F18">#199F18</color>
42 43 </resources>
... ...