Commit 8db8e71e019aa26346644e717fdc201dd8c9b9b5
1 parent
e1057e64
1 完成使用者管理界面搭建
Showing
40 changed files
with
2125 additions
and
214 deletions
module_xiaojiaSoundBox/src/main/AndroidManifest.xml
| @@ -17,7 +17,9 @@ | @@ -17,7 +17,9 @@ | ||
| 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.DeviceDetailActivity"></activity> | 20 | + <activity android:name=".ui.activity.UserManagerActivity"></activity> |
| 21 | + <activity android:name=".ui.activity.ChangeDeviceNameActivity" /> | ||
| 22 | + <activity android:name=".ui.activity.DeviceDetailActivity" /> | ||
| 21 | <activity android:name=".ui.activity.SetFriendsRoleActivity" /> | 23 | <activity android:name=".ui.activity.SetFriendsRoleActivity" /> |
| 22 | <activity android:name=".ui.activity.SelectIMFriendActivity" /> | 24 | <activity android:name=".ui.activity.SelectIMFriendActivity" /> |
| 23 | <activity android:name=".ui.activity.FirmwareUpdateActivity" /> | 25 | <activity android:name=".ui.activity.FirmwareUpdateActivity" /> |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/presenter/UserManagerPresenter.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.UserManagerView; | ||
| 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 UserManagerPresenter extends MvpBasePresenter<UserManagerView> { | ||
| 26 | + | ||
| 27 | + private String TAG = "UserManagerPresenter"; | ||
| 28 | + | ||
| 29 | + public void getFamilyRole(Context context, String sid, String familyId) { | ||
| 30 | + if (null == getView()) { | ||
| 31 | + return; | ||
| 32 | + } | ||
| 33 | + getView().showLoadingView(); | ||
| 34 | + Map<String, String> map = new HashMap<>(); | ||
| 35 | + map.put("sid", sid); | ||
| 36 | + map.put("familyId", familyId); | ||
| 37 | + Logic.create(map) | ||
| 38 | + .action(new Logic.Action<Map<String, String>, SubscriptionBaseInfo<FamilyRoleBean>>() { | ||
| 39 | + @Override | ||
| 40 | + public Disposable action(Map<String, String> paramsMap, DataCallback<SubscriptionBaseInfo<FamilyRoleBean>> dataCallback) { | ||
| 41 | + return SubscriptionRequest.service(ApiServiceXiaoJia.class, api -> api.getFamilyRole(paramsMap)).subscribe(context, dataCallback); | ||
| 42 | + } | ||
| 43 | + }).<SubscriptionBaseInfo<FamilyRoleBean>>event() | ||
| 44 | + .setSuccessCallback(new SuccessCallback<SubscriptionBaseInfo<FamilyRoleBean>>() { | ||
| 45 | + @Override | ||
| 46 | + public void onSuccess(SubscriptionBaseInfo<FamilyRoleBean> baseInfo) { | ||
| 47 | + Log.e(TAG, "onSuccess: "); | ||
| 48 | + | ||
| 49 | + if (null == getView()) { | ||
| 50 | + return; | ||
| 51 | + } | ||
| 52 | + getView().hideLoadingView(); | ||
| 53 | + getView().initView(baseInfo.getData().getFamilyRoleList()); | ||
| 54 | + | ||
| 55 | + } | ||
| 56 | + }) | ||
| 57 | + .setFailureCallback(new FailureCallback() { | ||
| 58 | + @Override | ||
| 59 | + public void onFailure(int i, String s) { | ||
| 60 | + //显示重试 | ||
| 61 | + Log.e(TAG, "onFailure: " + s); | ||
| 62 | + getView().showRetryView(i, new View.OnClickListener() { | ||
| 63 | + @Override | ||
| 64 | + public void onClick(View view) { | ||
| 65 | + getFamilyRole(context, sid, familyId); | ||
| 66 | + } | ||
| 67 | + }); | ||
| 68 | + } | ||
| 69 | + }) | ||
| 70 | + | ||
| 71 | + .start(); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public void getSetRoleList(Context context, String sids, String familyId, FamilyRoleBean.FamilyRoleListBean bean) { | ||
| 75 | + if (null == getView()) { | ||
| 76 | + return; | ||
| 77 | + } | ||
| 78 | + QMUITipDialogUtil.loadingDialog(context, "请稍后...", false); | ||
| 79 | + Map<String, String> map = new HashMap<>(); | ||
| 80 | + map.put("sids", sids); | ||
| 81 | + map.put("familyId", familyId); | ||
| 82 | + Logic.create(map) | ||
| 83 | + .action(new Logic.Action<Map<String, String>, SubscriptionBaseInfo<RoleNetBean>>() { | ||
| 84 | + @Override | ||
| 85 | + public Disposable action(Map<String, String> paramsMap, DataCallback<SubscriptionBaseInfo<RoleNetBean>> dataCallback) { | ||
| 86 | + return SubscriptionRequest.service(ApiServiceXiaoJia.class, api -> api.getSetRoleList(paramsMap)).subscribe(context, dataCallback); | ||
| 87 | + } | ||
| 88 | + }).<SubscriptionBaseInfo<RoleNetBean>>event() | ||
| 89 | + .setSuccessCallback(new SuccessCallback<SubscriptionBaseInfo<RoleNetBean>>() { | ||
| 90 | + @Override | ||
| 91 | + public void onSuccess(SubscriptionBaseInfo<RoleNetBean> baseInfo) { | ||
| 92 | + Log.e(TAG, "onSuccess: "); | ||
| 93 | + | ||
| 94 | + if (null == getView()) { | ||
| 95 | + return; | ||
| 96 | + } | ||
| 97 | + QMUITipDialogUtil.dismessDialog(); | ||
| 98 | + getView().initRoleDialog(baseInfo.getData(), bean); | ||
| 99 | + } | ||
| 100 | + }) | ||
| 101 | + .setFailureCallback(new FailureCallback() { | ||
| 102 | + @Override | ||
| 103 | + public void onFailure(int i, String s) { | ||
| 104 | + if (null == getView()) { | ||
| 105 | + return; | ||
| 106 | + } | ||
| 107 | + //显示重试 | ||
| 108 | + QMUITipDialogUtil.dismessDialog(); | ||
| 109 | + QMUITipDialogUtil.failedDialog(context, s, 1); | ||
| 110 | + } | ||
| 111 | + }) | ||
| 112 | + | ||
| 113 | + .start(); | ||
| 114 | + } | ||
| 115 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/UserManagerView.java
0 → 100644
| 1 | +package com.cnlive.strike.xiaojiaspeaker.frame.view; | ||
| 2 | + | ||
| 3 | +import android.app.Activity; | ||
| 4 | +import android.graphics.Color; | ||
| 5 | +import android.graphics.Typeface; | ||
| 6 | +import android.support.v7.widget.LinearLayoutManager; | ||
| 7 | +import android.view.View; | ||
| 8 | + | ||
| 9 | +import com.cnlive.strike.xiaojiaspeaker.R; | ||
| 10 | +import com.cnlive.strike.xiaojiaspeaker.commonInfo.CommInfo; | ||
| 11 | +import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo; | ||
| 12 | +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean; | ||
| 13 | +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean; | ||
| 14 | +import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity; | ||
| 15 | +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; | ||
| 18 | +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.UserManagerFragment; | ||
| 19 | +import com.cnlive.strike.xiaojiaspeaker.ui.widget.EditRoleDialog; | ||
| 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; | ||
| 23 | +import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo; | ||
| 24 | +import com.cnlive.strike.xiaojiaspeaker.util.GsonUtil; | ||
| 25 | +import com.cnlive.strike.xiaojiaspeaker.util.utilcode.util.GsonUtils; | ||
| 26 | +import com.hannesdorfmann.mosby3.mvp.MvpView; | ||
| 27 | + | ||
| 28 | +import java.util.ArrayList; | ||
| 29 | +import java.util.List; | ||
| 30 | + | ||
| 31 | +public class UserManagerView implements MvpView { | ||
| 32 | + private UserManagerFragment fragment; | ||
| 33 | + private List<FamilyRoleBean.FamilyRoleListBean> familyRoleList; | ||
| 34 | + private UserManagerAdapter adapter; | ||
| 35 | + private List<PopMenuInfo> popMenuInfoList = null; | ||
| 36 | + private PopMenu mPopMenu; | ||
| 37 | + private List<RoleInfo> roleInfoList; | ||
| 38 | + private EditRoleDialog editRoleDialog; | ||
| 39 | + private SelectDialog deleteDialog; | ||
| 40 | + private String test = "{\n" + | ||
| 41 | + "\t\"familyRoleList\": [{\n" + | ||
| 42 | + "\t\t\t\"family_id\": \"fb8f160efc61431f96e8111e0cbfd349\",\n" + | ||
| 43 | + "\t\t\t\"roleName\": \"爷爷\",\n" + | ||
| 44 | + "\t\t\t\"id\": 3,\n" + | ||
| 45 | + "\t\t\t\"userMsg\": {\n" + | ||
| 46 | + "\t\t\t\t\"image\": \"\",\n" + | ||
| 47 | + "\t\t\t\t\"nickName\": \"demotest6\",\n" + | ||
| 48 | + "\t\t\t\t\"userId\": \"123456\"\n" + | ||
| 49 | + "\t\t\t},\n" + | ||
| 50 | + "\t\t\t\"sid\": 123456\n" + | ||
| 51 | + "\t\t},\n" + | ||
| 52 | + "\t\t{\n" + | ||
| 53 | + "\t\t\t\"family_id\": \"fb8f160efc61431f96e8111e0cbfd349\",\n" + | ||
| 54 | + "\t\t\t\"roleName\": \"管理员\",\n" + | ||
| 55 | + "\t\t\t\"id\": 11,\n" + | ||
| 56 | + "\t\t\t\"userMsg\": {\n" + | ||
| 57 | + "\t\t\t\t\"image\": \"http://yweb0.cnliveimg.com/images/headImg/2019/0903/1567494184454_small.jpg\",\n" + | ||
| 58 | + "\t\t\t\t\"nickName\": \"泡泡龙1\",\n" + | ||
| 59 | + "\t\t\t\t\"userId\": \"10505015\"\n" + | ||
| 60 | + "\t\t\t},\n" + | ||
| 61 | + "\t\t\t\"sid\": 10505015\n" + | ||
| 62 | + "\t\t},\n" + | ||
| 63 | + "\t\t{\n" + | ||
| 64 | + "\t\t\t\"family_id\": \"fb8f160efc61431f96e8111e0cbfd349\",\n" + | ||
| 65 | + "\t\t\t\"roleName\": \"妈妈\",\n" + | ||
| 66 | + "\t\t\t\"id\": 2,\n" + | ||
| 67 | + "\t\t\t\"userMsg\": {\n" + | ||
| 68 | + "\t\t\t\t\"image\": \"http://yweb0.cnliveimg.com/images/headImg/2019/0927/1569568821902_small.jpg\",\n" + | ||
| 69 | + "\t\t\t\t\"nickName\": \"徐近程\",\n" + | ||
| 70 | + "\t\t\t\t\"userId\": \"10510277\"\n" + | ||
| 71 | + "\t\t\t},\n" + | ||
| 72 | + "\t\t\t\"sid\": 10510277\n" + | ||
| 73 | + "\t\t}\n" + | ||
| 74 | + "\t],\n" + | ||
| 75 | + "\t\"isMaster\": 0\n" + | ||
| 76 | + "}"; | ||
| 77 | + | ||
| 78 | + public UserManagerView(UserManagerFragment fragment) { | ||
| 79 | + this.fragment = fragment; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public Activity getContext() { | ||
| 83 | + return fragment == null ? null : fragment.getActivity(); | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public void initView(List<FamilyRoleBean.FamilyRoleListBean> familyRoleList) { | ||
| 87 | + this.familyRoleList = familyRoleList; | ||
| 88 | + FamilyRoleBean bean1 = GsonUtil.GsonToBean(test, FamilyRoleBean.class); | ||
| 89 | +// if (null != familyRoleList) { | ||
| 90 | + for (FamilyRoleBean.FamilyRoleListBean bean : bean1.getFamilyRoleList()) { | ||
| 91 | + if ("管理员".equals(bean.getRoleName())) { | ||
| 92 | + bean.setType(FamilyRoleBean.FamilyRoleListBean.HOST); | ||
| 93 | + } else { | ||
| 94 | + bean.setType(FamilyRoleBean.FamilyRoleListBean.MEMBER); | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + for (int i = 0; i < bean1.getFamilyRoleList().size(); i++) { | ||
| 98 | + if ("管理员".equals(bean1.getFamilyRoleList().get(i).getRoleName())) { | ||
| 99 | + FamilyRoleBean.FamilyRoleListBean bean = bean1.getFamilyRoleList().get(i); | ||
| 100 | + bean1.getFamilyRoleList().remove(i); | ||
| 101 | + bean1.getFamilyRoleList().add(0, bean); | ||
| 102 | + } | ||
| 103 | + } | ||
| 104 | +// } | ||
| 105 | + adapter = new UserManagerAdapter(getContext(), bean1.getFamilyRoleList(), true); | ||
| 106 | + fragment.binding.rvUserManagerList.setLayoutManager(new LinearLayoutManager(getContext())); | ||
| 107 | + fragment.binding.rvUserManagerList.setAdapter(adapter); | ||
| 108 | + //编辑按钮点击事件 | ||
| 109 | + adapter.setOnEditClickListener(new UserManagerAdapter.OnEditClickListener() { | ||
| 110 | + @Override | ||
| 111 | + public void editClick(int position, FamilyRoleBean.FamilyRoleListBean bean) { | ||
| 112 | + fragment.getPresenter().getSetRoleList(getContext(), bean.getSid() + "", CommInfo.getFamilyId(getContext()), bean); | ||
| 113 | + } | ||
| 114 | + }); | ||
| 115 | + //删除按钮点击 | ||
| 116 | + adapter.setOnDeleteClickListener(new UserManagerAdapter.OnDeleteClickListener() { | ||
| 117 | + @Override | ||
| 118 | + public void deleteClick(int position, FamilyRoleBean.FamilyRoleListBean bean) { | ||
| 119 | + if (null == deleteDialog) { | ||
| 120 | + deleteDialog = new SelectDialog(getContext(), "移除后,该用户将不再具备管理\n音箱的权限,确定移除吗?", "取消", new SelectDialog.DialogInterface() { | ||
| 121 | + @Override | ||
| 122 | + public void onClick(SelectDialog dialog) { | ||
| 123 | + dialog.dismiss(); | ||
| 124 | + } | ||
| 125 | + }, "确定", new SelectDialog.DialogInterface() { | ||
| 126 | + @Override | ||
| 127 | + public void onClick(SelectDialog dialog) { | ||
| 128 | + dialog.dismiss(); | ||
| 129 | + } | ||
| 130 | + }); | ||
| 131 | + deleteDialog.setRightBtnColor(R.color.btn_green); | ||
| 132 | + deleteDialog.setTipTextStyle(Typeface.DEFAULT); | ||
| 133 | + } | ||
| 134 | + if (!deleteDialog.isShowing()) { | ||
| 135 | + deleteDialog.show(); | ||
| 136 | + } | ||
| 137 | + } | ||
| 138 | + }); | ||
| 139 | + //邀请网家家好友点击事件 | ||
| 140 | + fragment.binding.btnInvitFriend.setOnClickListener(new View.OnClickListener() { | ||
| 141 | + @Override | ||
| 142 | + public void onClick(View view) { | ||
| 143 | + SelectIMFriendActivity.startActivity(getContext()); | ||
| 144 | + } | ||
| 145 | + }); | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + public void initRoleDialog(RoleNetBean roleNetBean, FamilyRoleBean.FamilyRoleListBean familyRoleListBean) { | ||
| 149 | + roleInfoList = new ArrayList<>(); | ||
| 150 | + //整理数据 | ||
| 151 | + //获取选中的联系人 | ||
| 152 | + if (null != roleNetBean.getRoleUserList()) { | ||
| 153 | + RoleInfo roleInfo = null; | ||
| 154 | + for (int i = 0; i < roleNetBean.getRoleUserList().size(); i++) { | ||
| 155 | + roleInfo = new RoleInfo(); | ||
| 156 | + roleInfo.setUid(roleNetBean.getRoleUserList().get(i).getSid()); | ||
| 157 | + roleInfo.setUserName(roleNetBean.getRoleUserList().get(i).getNick()); | ||
| 158 | + roleInfo.setUserIcon(roleNetBean.getRoleUserList().get(i).getFace()); | ||
| 159 | + List<RoleNetBean.RoleListBean> roleList = new ArrayList<>(); | ||
| 160 | + for (int j = 0; j < roleNetBean.getRoleList().size(); j++) { | ||
| 161 | + RoleNetBean.RoleListBean bean = new RoleNetBean.RoleListBean(); | ||
| 162 | + bean.setAllowUse(roleNetBean.getRoleList().get(j).isAllowUse()); | ||
| 163 | + bean.setId(roleNetBean.getRoleList().get(j).getId()); | ||
| 164 | + bean.setRoleName(roleNetBean.getRoleList().get(j).getRoleName()); | ||
| 165 | + bean.setParentPosition(i); | ||
| 166 | + roleList.add(bean); | ||
| 167 | + } | ||
| 168 | + roleInfo.setRoleList(roleList); | ||
| 169 | + roleInfoList.add(roleInfo); | ||
| 170 | + } | ||
| 171 | + } | ||
| 172 | + //设置适配器 | ||
| 173 | + if (null == editRoleDialog) { | ||
| 174 | + editRoleDialog = new EditRoleDialog(getContext()); | ||
| 175 | + } | ||
| 176 | + editRoleDialog.setData(roleInfoList, familyRoleListBean); | ||
| 177 | + editRoleDialog.setCancelable(false); | ||
| 178 | + editRoleDialog.setCanceledOnTouchOutside(false); | ||
| 179 | + if (!editRoleDialog.isShowing()) { | ||
| 180 | + editRoleDialog.show(); | ||
| 181 | + } | ||
| 182 | + editRoleDialog.setOnClickListener(new EditRoleDialog.OnClickListener() { | ||
| 183 | + @Override | ||
| 184 | + public void onCancelClick(EditRoleDialog dialog) { | ||
| 185 | + dialog.dismiss(); | ||
| 186 | + } | ||
| 187 | + | ||
| 188 | + @Override | ||
| 189 | + public void onSaveClick(EditRoleDialog dialog) { | ||
| 190 | + dialog.dismiss(); | ||
| 191 | + } | ||
| 192 | + }); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + /** | ||
| 196 | + * 显示loading | ||
| 197 | + */ | ||
| 198 | + public void showLoadingView() { | ||
| 199 | + if (fragment.binding.emptyLayout == null) { | ||
| 200 | + return; | ||
| 201 | + } | ||
| 202 | + fragment.binding.emptyLayout.show(true); | ||
| 203 | + } | ||
| 204 | + | ||
| 205 | + /** | ||
| 206 | + * 隐藏loading | ||
| 207 | + */ | ||
| 208 | + public void hideLoadingView() { | ||
| 209 | + if (fragment.binding.emptyLayout == null) { | ||
| 210 | + return; | ||
| 211 | + } | ||
| 212 | + fragment.binding.emptyLayout.hide(); | ||
| 213 | + } | ||
| 214 | + | ||
| 215 | + /** | ||
| 216 | + * 显示重试页面 | ||
| 217 | + * | ||
| 218 | + * @param errorCode | ||
| 219 | + * @param listener | ||
| 220 | + */ | ||
| 221 | + public void showRetryView(int errorCode, View.OnClickListener listener) { | ||
| 222 | + //显示空视图 | ||
| 223 | + fragment.binding.emptyLayout.setVisibility(View.VISIBLE); | ||
| 224 | + | ||
| 225 | + if (fragment.binding.emptyLayout == null) return; | ||
| 226 | + String titleText = ""; | ||
| 227 | + String detailText = ""; | ||
| 228 | + if (errorCode == -3) { | ||
| 229 | + titleText = getContext().getString(R.string.msg_failed_network_title); | ||
| 230 | + detailText = getContext().getString(R.string.msg_failed_network_detail); | ||
| 231 | + } else { | ||
| 232 | + titleText = getContext().getString(R.string.msg_failed_other_title); | ||
| 233 | + detailText = getContext().getString(R.string.msg_failed_other_detail); | ||
| 234 | + } | ||
| 235 | + fragment.binding.emptyLayout.show(false, titleText, detailText, getContext().getString(R.string.retry), R.drawable.wufalianjie, listener); | ||
| 236 | + } | ||
| 237 | + | ||
| 238 | + public void initPopView() { | ||
| 239 | +// View contentView = LayoutInflater.from(getContext()) | ||
| 240 | +// .inflate(R.layout.activity_all_device, null); | ||
| 241 | +// BottomSheetDialog dialog = new BottomSheetDialog(getContext()); | ||
| 242 | +// dialog.setContentView(contentView); | ||
| 243 | +// dialog.setCancelable(false); | ||
| 244 | +// BottomSheetBehavior sheetBehavior = BottomSheetBehavior.from((View) contentView.getParent()); | ||
| 245 | +// sheetBehavior.setPeekHeight(200); | ||
| 246 | + //给布局设置透明背景色,让图片突出来 | ||
| 247 | +// bottomSheetDialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet) | ||
| 248 | +// .setBackgroundColor(getResources().getColor(android.R.color.transparent)); | ||
| 249 | +// dialog.show(); | ||
| 250 | + | ||
| 251 | + popMenuInfoList = new ArrayList<>(); | ||
| 252 | + PopMenuInfo popMenuInfo = new PopMenuInfo(); | ||
| 253 | + popMenuInfo.setTitle("邀请网家家好友"); | ||
| 254 | + popMenuInfo.setImgDrawable(R.drawable.icon_friend); | ||
| 255 | + popMenuInfoList.add(popMenuInfo); | ||
| 256 | + popMenuInfo = new PopMenuInfo(); | ||
| 257 | + popMenuInfo.setTitle("生成二维码邀请"); | ||
| 258 | + popMenuInfo.setImgDrawable(R.drawable.icon_qrcode); | ||
| 259 | + popMenuInfoList.add(popMenuInfo); | ||
| 260 | + | ||
| 261 | + if (null == mPopMenu) { | ||
| 262 | + mPopMenu = new PopMenu.Builder(fragment.getActivity()) | ||
| 263 | + .addData(popMenuInfoList) | ||
| 264 | + .setBackgroundColorArray(new int[]{Color.parseColor("#363636"), Color.parseColor("#BF000000"), Color.parseColor("#BF000000")}) | ||
| 265 | + .setLeftAndRightMargin(20) | ||
| 266 | + .setTopMargin(20) | ||
| 267 | + .setLineColor(R.color.white_50) | ||
| 268 | + .setTextColor(R.color.white) | ||
| 269 | + .setLineVisible(View.GONE) | ||
| 270 | +// .setArrowHeight(30f) | ||
| 271 | +// .setArrowHeight(30f) | ||
| 272 | + .setCancelable(false) | ||
| 273 | + .setCornerRadius(20f) | ||
| 274 | + .build(); | ||
| 275 | + } | ||
| 276 | + | ||
| 277 | + mPopMenu.setmItemClickListener(new PopMenu.OnItemClickListener() { | ||
| 278 | + @Override | ||
| 279 | + public void onClick(int position, PopMenuInfo popMenuInfo) { | ||
| 280 | + if (position == 1) { | ||
| 281 | + BlueToothStep1Activity.startActivity(fragment.getActivity()); | ||
| 282 | + } | ||
| 283 | + } | ||
| 284 | + }); | ||
| 285 | + } | ||
| 286 | + | ||
| 287 | + public void showPop(View view) { | ||
| 288 | + if (null != getContext() && null != mPopMenu) { | ||
| 289 | + mPopMenu.show(view); | ||
| 290 | + } | ||
| 291 | + } | ||
| 292 | + | ||
| 293 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/netWork/ApiServiceXiaoJia.java
| @@ -2,6 +2,7 @@ package com.cnlive.strike.xiaojiaspeaker.netWork; | @@ -2,6 +2,7 @@ package com.cnlive.strike.xiaojiaspeaker.netWork; | ||
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyListBean; | 4 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyListBean; |
| 5 | +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean; | ||
| 5 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.NetworkResultBean; | 6 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.NetworkResultBean; |
| 6 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean; | 7 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.RoleNetBean; |
| 7 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.SubscriptionBaseInfo; | 8 | import com.cnlive.strike.xiaojiaspeaker.netWork.bean.SubscriptionBaseInfo; |
| @@ -19,6 +20,7 @@ import retrofit2.http.QueryMap; | @@ -19,6 +20,7 @@ import retrofit2.http.QueryMap; | ||
| 19 | public interface ApiServiceXiaoJia { | 20 | public interface ApiServiceXiaoJia { |
| 20 | @POST("Daren/sound/getSetRoleList.action") | 21 | @POST("Daren/sound/getSetRoleList.action") |
| 21 | Observable<Result<SubscriptionBaseInfo<RoleNetBean>>> getSetRoleList(@QueryMap() Map<String, String> maps); | 22 | Observable<Result<SubscriptionBaseInfo<RoleNetBean>>> getSetRoleList(@QueryMap() Map<String, String> maps); |
| 23 | + | ||
| 22 | /** | 24 | /** |
| 23 | * 获取家庭id | 25 | * 获取家庭id |
| 24 | * sid Integer true sid | 26 | * sid Integer true sid |
| @@ -41,5 +43,19 @@ public interface ApiServiceXiaoJia { | @@ -41,5 +43,19 @@ public interface ApiServiceXiaoJia { | ||
| 41 | */ | 43 | */ |
| 42 | @POST("/Daren/sound/getNetworkResult.action") | 44 | @POST("/Daren/sound/getNetworkResult.action") |
| 43 | Observable<Result<SubscriptionBaseInfo<NetworkResultBean>>> getNetworkResult(@QueryMap() Map<String, String> maps); | 45 | Observable<Result<SubscriptionBaseInfo<NetworkResultBean>>> getNetworkResult(@QueryMap() Map<String, String> maps); |
| 46 | + | ||
| 47 | + | ||
| 48 | + /** | ||
| 49 | + * 获取家庭身份列表 | ||
| 50 | + * sid String true sid | ||
| 51 | + * familyId String true 家庭id | ||
| 52 | + * | ||
| 53 | + * @param maps | ||
| 54 | + * @return | ||
| 55 | + */ | ||
| 56 | + @POST("/Daren/sound/getFamilyRole.action") | ||
| 57 | + Observable<Result<SubscriptionBaseInfo<FamilyRoleBean>>> getFamilyRole(@QueryMap() Map<String, String> maps); | ||
| 58 | + | ||
| 59 | + | ||
| 44 | } | 60 | } |
| 45 | 61 |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/netWork/bean/FamilyRoleBean.java
0 → 100644
| 1 | +package com.cnlive.strike.xiaojiaspeaker.netWork.bean; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * 家庭身份 | ||
| 7 | + */ | ||
| 8 | +public class FamilyRoleBean { | ||
| 9 | + public static final int HOST = 1;//主人 | ||
| 10 | + public static final int MEMBER = 0;//成员 | ||
| 11 | + /** | ||
| 12 | + * familyRoleList : [{"family_id":"fb8f160efc61431f96e8111e0cbfd349","roleName":"爷爷","id":3,"userMsg":{"image":"","nickName":"demotest6","userId":"123456"},"sid":123456},{"family_id":"fb8f160efc61431f96e8111e0cbfd349","roleName":"管理员","id":11,"userMsg":{"image":"http://yweb0.cnliveimg.com/images/headImg/2019/0903/1567494184454_small.jpg","nickName":"泡泡龙1","userId":"10505015"},"sid":10505015},{"family_id":"fb8f160efc61431f96e8111e0cbfd349","roleName":"妈妈","id":2,"userMsg":{"image":"http://yweb0.cnliveimg.com/images/headImg/2019/0927/1569568821902_small.jpg","nickName":"徐近程","userId":"10510277"},"sid":10510277}] | ||
| 13 | + * isMaster : 0 | ||
| 14 | + */ | ||
| 15 | + | ||
| 16 | + private int isMaster; | ||
| 17 | + private List<FamilyRoleListBean> familyRoleList; | ||
| 18 | + | ||
| 19 | + public int getIsMaster() { | ||
| 20 | + return isMaster; | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + public void setIsMaster(int isMaster) { | ||
| 24 | + this.isMaster = isMaster; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + public List<FamilyRoleListBean> getFamilyRoleList() { | ||
| 28 | + return familyRoleList; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + public void setFamilyRoleList(List<FamilyRoleListBean> familyRoleList) { | ||
| 32 | + this.familyRoleList = familyRoleList; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + public static class FamilyRoleListBean { | ||
| 36 | + /** | ||
| 37 | + * family_id : fb8f160efc61431f96e8111e0cbfd349 | ||
| 38 | + * roleName : 爷爷 | ||
| 39 | + * id : 3 | ||
| 40 | + * userMsg : {"image":"","nickName":"demotest6","userId":"123456"} | ||
| 41 | + * sid : 123456 | ||
| 42 | + */ | ||
| 43 | + public static final int HOST = 0;//主人 | ||
| 44 | + public static final int MEMBER = 1;//成员 | ||
| 45 | + | ||
| 46 | + private String family_id; | ||
| 47 | + private String roleName; | ||
| 48 | + private int id; | ||
| 49 | + private UserMsgBean userMsg; | ||
| 50 | + private int sid; | ||
| 51 | + private int type; | ||
| 52 | + | ||
| 53 | + public int getType() { | ||
| 54 | + return type; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public void setType(int type) { | ||
| 58 | + this.type = type; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public String getFamily_id() { | ||
| 62 | + return family_id; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + public void setFamily_id(String family_id) { | ||
| 66 | + this.family_id = family_id; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + public String getRoleName() { | ||
| 70 | + return roleName; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + public void setRoleName(String roleName) { | ||
| 74 | + this.roleName = roleName; | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + public int getId() { | ||
| 78 | + return id; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + public void setId(int id) { | ||
| 82 | + this.id = id; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public UserMsgBean getUserMsg() { | ||
| 86 | + return userMsg; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + public void setUserMsg(UserMsgBean userMsg) { | ||
| 90 | + this.userMsg = userMsg; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + public int getSid() { | ||
| 94 | + return sid; | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + public void setSid(int sid) { | ||
| 98 | + this.sid = sid; | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + public static class UserMsgBean { | ||
| 102 | + /** | ||
| 103 | + * image : | ||
| 104 | + * nickName : demotest6 | ||
| 105 | + * userId : 123456 | ||
| 106 | + */ | ||
| 107 | + | ||
| 108 | + private String image; | ||
| 109 | + private String nickName; | ||
| 110 | + private String userId; | ||
| 111 | + | ||
| 112 | + public String getImage() { | ||
| 113 | + return image; | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + public void setImage(String image) { | ||
| 117 | + this.image = image; | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + public String getNickName() { | ||
| 121 | + return nickName; | ||
| 122 | + } | ||
| 123 | + | ||
| 124 | + public void setNickName(String nickName) { | ||
| 125 | + this.nickName = nickName; | ||
| 126 | + } | ||
| 127 | + | ||
| 128 | + public String getUserId() { | ||
| 129 | + return userId; | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + public void setUserId(String userId) { | ||
| 133 | + this.userId = userId; | ||
| 134 | + } | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/ChangeDeviceNameActivity.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.databinding.DataBindingUtil; | ||
| 6 | +import android.support.v4.content.ContextCompat; | ||
| 7 | +import android.support.v7.app.AppCompatActivity; | ||
| 8 | +import android.os.Bundle; | ||
| 9 | +import android.text.Editable; | ||
| 10 | +import android.text.TextWatcher; | ||
| 11 | +import android.view.View; | ||
| 12 | + | ||
| 13 | +import com.cnlive.libs.base.util.StatusBarUtil; | ||
| 14 | +import com.cnlive.libs.base.util.StatusBarUtil2; | ||
| 15 | +import com.cnlive.strike.xiaojiaspeaker.R; | ||
| 16 | +import com.cnlive.strike.xiaojiaspeaker.databinding.ActivityChangeDeviceNameBinding; | ||
| 17 | +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyListBean; | ||
| 18 | + | ||
| 19 | +import java.io.Serializable; | ||
| 20 | + | ||
| 21 | +/** | ||
| 22 | + * 更改音箱名称 | ||
| 23 | + */ | ||
| 24 | +public class ChangeDeviceNameActivity extends AppCompatActivity { | ||
| 25 | + private ActivityChangeDeviceNameBinding binding; | ||
| 26 | + | ||
| 27 | + @Override | ||
| 28 | + protected void onCreate(Bundle savedInstanceState) { | ||
| 29 | + super.onCreate(savedInstanceState); | ||
| 30 | + binding = DataBindingUtil.setContentView(this, R.layout.activity_change_device_name); | ||
| 31 | + initTopBar(); | ||
| 32 | + initView(); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + private void initView() { | ||
| 36 | + //编辑框 | ||
| 37 | + binding.etName.addTextChangedListener(new TextWatcher() { | ||
| 38 | + @Override | ||
| 39 | + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { | ||
| 40 | + | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + @Override | ||
| 44 | + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { | ||
| 45 | + if (null != charSequence && charSequence.length() > 0) { | ||
| 46 | + binding.ivClose.setVisibility(View.VISIBLE); | ||
| 47 | + setBtnClick(); | ||
| 48 | + } else { | ||
| 49 | + binding.ivClose.setVisibility(View.GONE); | ||
| 50 | + setBtnCantClick(); | ||
| 51 | + } | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + @Override | ||
| 55 | + public void afterTextChanged(Editable editable) { | ||
| 56 | + | ||
| 57 | + } | ||
| 58 | + }); | ||
| 59 | + //清除按钮点击事件 | ||
| 60 | + binding.ivClose.setOnClickListener(new View.OnClickListener() { | ||
| 61 | + @Override | ||
| 62 | + public void onClick(View view) { | ||
| 63 | + binding.etName.setText(""); | ||
| 64 | + } | ||
| 65 | + }); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + private void initTopBar() { | ||
| 69 | + StatusBarUtil.setStatusBarWrite(this); | ||
| 70 | + StatusBarUtil2.setColor(this, ContextCompat.getColor(this, R.color.white), 0); | ||
| 71 | + if (null != binding) { | ||
| 72 | + binding.topbar.setTitle("更改音箱名称"); | ||
| 73 | + //设置返回按钮 | ||
| 74 | + binding.topbar.addLeftImageButton(R.drawable.icon_back, R.id.left_back).setOnClickListener(new View.OnClickListener() { | ||
| 75 | + @Override | ||
| 76 | + public void onClick(View view) { | ||
| 77 | + finish(); | ||
| 78 | + } | ||
| 79 | + }); | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public static void startActivity(Activity activity) { | ||
| 84 | + Intent intent = new Intent(activity, ChangeDeviceNameActivity.class); | ||
| 85 | + activity.startActivity(intent); | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + /** | ||
| 89 | + * 设置绑定按钮不可点击 | ||
| 90 | + */ | ||
| 91 | + private void setBtnCantClick() { | ||
| 92 | + if (binding.btnNext.isClickable()) { | ||
| 93 | + binding.btnNext.setClickable(false); | ||
| 94 | + binding.btnNext.setBackground(ContextCompat.getDrawable(ChangeDeviceNameActivity.this, R.drawable.shape_btn_press)); | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + /** | ||
| 99 | + * 设置绑定按钮可点击 | ||
| 100 | + */ | ||
| 101 | + private void setBtnClick() { | ||
| 102 | + if (!binding.btnNext.isClickable()) { | ||
| 103 | + binding.btnNext.setClickable(true); | ||
| 104 | + binding.btnNext.setBackground(ContextCompat.getDrawable(ChangeDeviceNameActivity.this, R.drawable.selector_btn_green)); | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/DeviceDetailActivity.java
| @@ -42,7 +42,7 @@ public class DeviceDetailActivity extends AppCompatActivity { | @@ -42,7 +42,7 @@ public class DeviceDetailActivity extends AppCompatActivity { | ||
| 42 | binding.rlUserManager.setOnClickListener(new View.OnClickListener() { | 42 | binding.rlUserManager.setOnClickListener(new View.OnClickListener() { |
| 43 | @Override | 43 | @Override |
| 44 | public void onClick(View view) { | 44 | public void onClick(View view) { |
| 45 | - | 45 | + UserManagerActivity.StartActivity(DeviceDetailActivity.this); |
| 46 | } | 46 | } |
| 47 | }); | 47 | }); |
| 48 | //设备管理 | 48 | //设备管理 |
| @@ -56,7 +56,7 @@ public class DeviceDetailActivity extends AppCompatActivity { | @@ -56,7 +56,7 @@ public class DeviceDetailActivity extends AppCompatActivity { | ||
| 56 | binding.rlDeviceDeclare.setOnClickListener(new View.OnClickListener() { | 56 | binding.rlDeviceDeclare.setOnClickListener(new View.OnClickListener() { |
| 57 | @Override | 57 | @Override |
| 58 | public void onClick(View view) { | 58 | public void onClick(View view) { |
| 59 | - | 59 | + DeviceInstructionActivity.startActivity(DeviceDetailActivity.this); |
| 60 | } | 60 | } |
| 61 | }); | 61 | }); |
| 62 | } | 62 | } |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/DeviceManagerActivity.java
| @@ -29,6 +29,38 @@ public class DeviceManagerActivity extends AppCompatActivity { | @@ -29,6 +29,38 @@ public class DeviceManagerActivity extends AppCompatActivity { | ||
| 29 | binding = DataBindingUtil.setContentView(this, R.layout.activity_device_manager); | 29 | binding = DataBindingUtil.setContentView(this, R.layout.activity_device_manager); |
| 30 | // getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, DeviceManagerFragment.newInstance()).commitAllowingStateLoss(); | 30 | // getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, DeviceManagerFragment.newInstance()).commitAllowingStateLoss(); |
| 31 | initTopBar(); | 31 | initTopBar(); |
| 32 | + initView(); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + private void initView() { | ||
| 36 | + //音箱名称 | ||
| 37 | + binding.llDeviceName.setOnClickListener(new View.OnClickListener() { | ||
| 38 | + @Override | ||
| 39 | + public void onClick(View view) { | ||
| 40 | + ChangeDeviceNameActivity.startActivity(DeviceManagerActivity.this); | ||
| 41 | + } | ||
| 42 | + }); | ||
| 43 | + //wifi设置 | ||
| 44 | + binding.llWifiSetting.setOnClickListener(new View.OnClickListener() { | ||
| 45 | + @Override | ||
| 46 | + public void onClick(View view) { | ||
| 47 | + | ||
| 48 | + } | ||
| 49 | + }); | ||
| 50 | + //设备信息 | ||
| 51 | + binding.llDeviceInfo.setOnClickListener(new View.OnClickListener() { | ||
| 52 | + @Override | ||
| 53 | + public void onClick(View view) { | ||
| 54 | + | ||
| 55 | + } | ||
| 56 | + }); | ||
| 57 | + //固件升级 | ||
| 58 | + binding.llDeviceUpdate.setOnClickListener(new View.OnClickListener() { | ||
| 59 | + @Override | ||
| 60 | + public void onClick(View view) { | ||
| 61 | + FirmwareUpdateActivity.startActivity(DeviceManagerActivity.this); | ||
| 62 | + } | ||
| 63 | + }); | ||
| 32 | } | 64 | } |
| 33 | 65 | ||
| 34 | private void initTopBar() { | 66 | private void initTopBar() { |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/SelectIMFriendActivity.java
| 1 | package com.cnlive.strike.xiaojiaspeaker.ui.activity; | 1 | package com.cnlive.strike.xiaojiaspeaker.ui.activity; |
| 2 | 2 | ||
| 3 | +import android.app.Activity; | ||
| 4 | +import android.content.Intent; | ||
| 3 | import android.support.v7.app.AppCompatActivity; | 5 | import android.support.v7.app.AppCompatActivity; |
| 4 | import android.os.Bundle; | 6 | import android.os.Bundle; |
| 5 | 7 | ||
| @@ -16,4 +18,9 @@ public class SelectIMFriendActivity extends AppCompatActivity { | @@ -16,4 +18,9 @@ public class SelectIMFriendActivity extends AppCompatActivity { | ||
| 16 | getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, SelectIMFriendFragment.newInstance()).commit(); | 18 | getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, SelectIMFriendFragment.newInstance()).commit(); |
| 17 | 19 | ||
| 18 | } | 20 | } |
| 21 | + | ||
| 22 | + public static void startActivity(Activity activity) { | ||
| 23 | + Intent intent = new Intent(activity, SelectIMFriendActivity.class); | ||
| 24 | + activity.startActivity(intent); | ||
| 25 | + } | ||
| 19 | } | 26 | } |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/UserManagerActivity.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.clj.fastble.data.BleDevice; | ||
| 9 | +import com.cnlive.strike.xiaojiaspeaker.R; | ||
| 10 | +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.SelectWifiFragment; | ||
| 11 | +import com.cnlive.strike.xiaojiaspeaker.ui.fragment.UserManagerFragment; | ||
| 12 | + | ||
| 13 | +public class UserManagerActivity extends AppCompatActivity { | ||
| 14 | + | ||
| 15 | + @Override | ||
| 16 | + protected void onCreate(Bundle savedInstanceState) { | ||
| 17 | + super.onCreate(savedInstanceState); | ||
| 18 | + setContentView(R.layout.activity_user_manager); | ||
| 19 | + getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, UserManagerFragment.newInstance()).commitAllowingStateLoss(); | ||
| 20 | + | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + public static void StartActivity(Activity activity) { | ||
| 24 | + Intent intent = new Intent(activity, UserManagerActivity.class); | ||
| 25 | + activity.startActivity(intent); | ||
| 26 | + } | ||
| 27 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/adapter/SetRoleAdapter.java
| @@ -6,6 +6,7 @@ import android.support.annotation.NonNull; | @@ -6,6 +6,7 @@ import android.support.annotation.NonNull; | ||
| 6 | import android.support.v7.widget.GridLayoutManager; | 6 | import android.support.v7.widget.GridLayoutManager; |
| 7 | import android.support.v7.widget.RecyclerView; | 7 | import android.support.v7.widget.RecyclerView; |
| 8 | import android.view.LayoutInflater; | 8 | import android.view.LayoutInflater; |
| 9 | +import android.view.View; | ||
| 9 | import android.view.ViewGroup; | 10 | import android.view.ViewGroup; |
| 10 | 11 | ||
| 11 | import com.cnlive.strike.application.GlideApp; | 12 | import com.cnlive.strike.application.GlideApp; |
| @@ -24,6 +25,16 @@ public class SetRoleAdapter extends RecyclerView.Adapter { | @@ -24,6 +25,16 @@ public class SetRoleAdapter extends RecyclerView.Adapter { | ||
| 24 | private Map<String, Boolean> allowSelectMap; | 25 | private Map<String, Boolean> allowSelectMap; |
| 25 | private AllRoleDetailAdapter adapter; | 26 | private AllRoleDetailAdapter adapter; |
| 26 | private List<Integer> initNotAllowRoleId;//服务器初始给的不允许点击的值 | 27 | private List<Integer> initNotAllowRoleId;//服务器初始给的不允许点击的值 |
| 28 | + private int gridCount = -1; | ||
| 29 | + private int isShowItemUserInfo = View.VISIBLE; | ||
| 30 | + | ||
| 31 | + public void setIsShowItemUserInfo(int isShowItemUserInfo) { | ||
| 32 | + this.isShowItemUserInfo = isShowItemUserInfo; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + public void setGridCount(int count) { | ||
| 36 | + this.gridCount = count; | ||
| 37 | + } | ||
| 27 | 38 | ||
| 28 | public List<RoleInfo> getRoleInfoList() { | 39 | public List<RoleInfo> getRoleInfoList() { |
| 29 | return roleInfoList; | 40 | return roleInfoList; |
| @@ -63,9 +74,18 @@ public class SetRoleAdapter extends RecyclerView.Adapter { | @@ -63,9 +74,18 @@ public class SetRoleAdapter extends RecyclerView.Adapter { | ||
| 63 | ItemListSetRoleBinding binding = ((MyViewHolder) viewHolder).getBinding(); | 74 | ItemListSetRoleBinding binding = ((MyViewHolder) viewHolder).getBinding(); |
| 64 | binding.tvName.setText(roleInfoList.get(position).getUserName()); | 75 | binding.tvName.setText(roleInfoList.get(position).getUserName()); |
| 65 | GlideApp.with(context).load(roleInfoList.get(position).getUserIcon()).placeholder(R.drawable.touxiang).into(binding.ivIcon); | 76 | 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 | + } | ||
| 66 | //设置适配器 | 82 | //设置适配器 |
| 67 | adapter = new AllRoleDetailAdapter(context, roleInfoList.get(position).getRoleList(), this); | 83 | adapter = new AllRoleDetailAdapter(context, roleInfoList.get(position).getRoleList(), this); |
| 68 | - binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, 4)); | 84 | + if (-1 == gridCount) { |
| 85 | + binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, 4)); | ||
| 86 | + }else { | ||
| 87 | + binding.rvRoleList.setLayoutManager(new GridLayoutManager(context, gridCount)); | ||
| 88 | + } | ||
| 69 | binding.rvRoleList.setAdapter(adapter); | 89 | binding.rvRoleList.setAdapter(adapter); |
| 70 | } | 90 | } |
| 71 | 91 |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/adapter/UserManagerAdapter.java
0 → 100644
| 1 | +package com.cnlive.strike.xiaojiaspeaker.ui.adapter; | ||
| 2 | + | ||
| 3 | +import android.content.Context; | ||
| 4 | +import android.databinding.DataBindingUtil; | ||
| 5 | +import android.support.annotation.NonNull; | ||
| 6 | +import android.support.v7.widget.RecyclerView; | ||
| 7 | +import android.view.LayoutInflater; | ||
| 8 | +import android.view.View; | ||
| 9 | +import android.view.ViewGroup; | ||
| 10 | + | ||
| 11 | +import com.cnlive.strike.application.GlideApp; | ||
| 12 | +import com.cnlive.strike.xiaojiaspeaker.R; | ||
| 13 | +import com.cnlive.strike.xiaojiaspeaker.databinding.ItemListMenuSoundBoxNameBinding; | ||
| 14 | +import com.cnlive.strike.xiaojiaspeaker.databinding.ItemListSetRoleBinding; | ||
| 15 | +import com.cnlive.strike.xiaojiaspeaker.databinding.ItemListUserHostBinding; | ||
| 16 | +import com.cnlive.strike.xiaojiaspeaker.databinding.ItemListUserMemberBinding; | ||
| 17 | +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean; | ||
| 18 | + | ||
| 19 | +import java.util.List; | ||
| 20 | + | ||
| 21 | +public class UserManagerAdapter extends RecyclerView.Adapter { | ||
| 22 | + private Context context; | ||
| 23 | + private List<FamilyRoleBean.FamilyRoleListBean> familyRoleList; | ||
| 24 | + private boolean isAdmin;//是否是管理员 | ||
| 25 | + private OnEditClickListener onEditClickListener; | ||
| 26 | + private OnDeleteClickListener onDeleteClickListener; | ||
| 27 | + | ||
| 28 | + public UserManagerAdapter(Context context, List<FamilyRoleBean.FamilyRoleListBean> familyRoleList, boolean isAdmin) { | ||
| 29 | + this.context = context; | ||
| 30 | + this.familyRoleList = familyRoleList; | ||
| 31 | + this.isAdmin = isAdmin; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + public void setOnDeleteClickListener(OnDeleteClickListener onDeleteClickListener) { | ||
| 35 | + this.onDeleteClickListener = onDeleteClickListener; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + public void setOnEditClickListener(OnEditClickListener onEditClickListener) { | ||
| 39 | + this.onEditClickListener = onEditClickListener; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + @NonNull | ||
| 43 | + @Override | ||
| 44 | + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { | ||
| 45 | + LayoutInflater inflater = LayoutInflater.from(context); | ||
| 46 | + switch (viewType) { | ||
| 47 | + case FamilyRoleBean.FamilyRoleListBean.HOST: | ||
| 48 | + ItemListUserHostBinding hostBinding = DataBindingUtil.inflate(inflater, R.layout.item_list_user_host, viewGroup, false); | ||
| 49 | + return new UserHostViewHolder(hostBinding); | ||
| 50 | + case FamilyRoleBean.FamilyRoleListBean.MEMBER: | ||
| 51 | + ItemListUserMemberBinding memberBinding = DataBindingUtil.inflate(inflater, R.layout.item_list_user_member, viewGroup, false); | ||
| 52 | + return new UserMemberViewHolder(memberBinding); | ||
| 53 | + } | ||
| 54 | + return null; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + @Override | ||
| 58 | + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { | ||
| 59 | + switch (getItemViewType(position)) { | ||
| 60 | + case FamilyRoleBean.FamilyRoleListBean.HOST: | ||
| 61 | + ItemListUserHostBinding hostBinding = ((UserHostViewHolder) viewHolder).getBinding(); | ||
| 62 | + hostBinding.tvUserName.setText(familyRoleList.get(position).getUserMsg().getNickName()); | ||
| 63 | + hostBinding.tvUserRole.setText(familyRoleList.get(position).getRoleName()); | ||
| 64 | + //设置头像 | ||
| 65 | + GlideApp.with(context).load(familyRoleList.get(position).getUserMsg().getImage()).placeholder(R.drawable.touxiang).into(hostBinding.ivIcon); | ||
| 66 | + if (!isAdmin) { | ||
| 67 | + hostBinding.tvFlag.setVisibility(View.GONE); | ||
| 68 | + } else { | ||
| 69 | + hostBinding.tvFlag.setVisibility(View.VISIBLE); | ||
| 70 | + } | ||
| 71 | + break; | ||
| 72 | + case FamilyRoleBean.FamilyRoleListBean.MEMBER: | ||
| 73 | + ItemListUserMemberBinding memberBinding = ((UserMemberViewHolder) viewHolder).getBinding(); | ||
| 74 | + memberBinding.tvUserName.setText(familyRoleList.get(position).getUserMsg().getNickName()); | ||
| 75 | + memberBinding.tvUserRole.setText(familyRoleList.get(position).getRoleName()); | ||
| 76 | + //设置头像 | ||
| 77 | + GlideApp.with(context).load(familyRoleList.get(position).getUserMsg().getImage()).placeholder(R.drawable.touxiang).into(memberBinding.ivIcon); | ||
| 78 | + if (position == familyRoleList.size() - 1) { | ||
| 79 | + memberBinding.viewLine.setVisibility(View.GONE); | ||
| 80 | + } else { | ||
| 81 | + memberBinding.viewLine.setVisibility(View.VISIBLE); | ||
| 82 | + } | ||
| 83 | + if (!isAdmin) { | ||
| 84 | + memberBinding.llMenu.setVisibility(View.GONE); | ||
| 85 | + if (familyRoleList.get(position).getSid() == 10510277) { | ||
| 86 | + memberBinding.tvFlag.setVisibility(View.VISIBLE); | ||
| 87 | + } else { | ||
| 88 | + memberBinding.tvFlag.setVisibility(View.GONE); | ||
| 89 | + } | ||
| 90 | + } else { | ||
| 91 | + memberBinding.llMenu.setVisibility(View.VISIBLE); | ||
| 92 | + memberBinding.tvFlag.setVisibility(View.GONE); | ||
| 93 | + } | ||
| 94 | + break; | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + @Override | ||
| 99 | + public int getItemViewType(int position) { | ||
| 100 | + return familyRoleList.get(position).getType(); | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + @Override | ||
| 104 | + public int getItemCount() { | ||
| 105 | + return familyRoleList.size(); | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + /** | ||
| 109 | + * 管理员 | ||
| 110 | + */ | ||
| 111 | + private class UserHostViewHolder extends RecyclerView.ViewHolder { | ||
| 112 | + | ||
| 113 | + public ItemListUserHostBinding getBinding() { | ||
| 114 | + return binding; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + private ItemListUserHostBinding binding; | ||
| 118 | + | ||
| 119 | + public UserHostViewHolder(ItemListUserHostBinding binding) { | ||
| 120 | + super(binding.getRoot()); | ||
| 121 | + this.binding = binding; | ||
| 122 | + } | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + /** | ||
| 126 | + * 成员 | ||
| 127 | + */ | ||
| 128 | + private class UserMemberViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { | ||
| 129 | + public ItemListUserMemberBinding getBinding() { | ||
| 130 | + return binding; | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + private ItemListUserMemberBinding binding; | ||
| 134 | + | ||
| 135 | + public UserMemberViewHolder(ItemListUserMemberBinding binding) { | ||
| 136 | + super(binding.getRoot()); | ||
| 137 | + this.binding = binding; | ||
| 138 | + //编辑 | ||
| 139 | + binding.llDelete.setOnClickListener(this); | ||
| 140 | + //删除 | ||
| 141 | + binding.llEdit.setOnClickListener(this); | ||
| 142 | + } | ||
| 143 | + | ||
| 144 | + @Override | ||
| 145 | + public void onClick(View view) { | ||
| 146 | + if (view.getId() == R.id.ll_edit) { | ||
| 147 | + if (null != onEditClickListener) { | ||
| 148 | + onEditClickListener.editClick(getAdapterPosition(), familyRoleList.get(getAdapterPosition())); | ||
| 149 | + } | ||
| 150 | + } else if (view.getId() == R.id.ll_delete) { | ||
| 151 | + if (null != onDeleteClickListener) { | ||
| 152 | + onDeleteClickListener.deleteClick(getAdapterPosition(), familyRoleList.get(getAdapterPosition())); | ||
| 153 | + } | ||
| 154 | + } | ||
| 155 | + } | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + public interface OnEditClickListener { | ||
| 159 | + void editClick(int position, FamilyRoleBean.FamilyRoleListBean bean); | ||
| 160 | + } | ||
| 161 | + | ||
| 162 | + public interface OnDeleteClickListener { | ||
| 163 | + void deleteClick(int position, FamilyRoleBean.FamilyRoleListBean bean); | ||
| 164 | + } | ||
| 165 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/UserManagerFragment.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 | +import android.widget.Button; | ||
| 8 | + | ||
| 9 | +import com.cnlive.libs.base.frame.fragment.MvpBindingFragment; | ||
| 10 | +import com.cnlive.libs.base.util.StatusBarUtil; | ||
| 11 | +import com.cnlive.libs.base.util.StatusBarUtil2; | ||
| 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; | ||
| 16 | +import com.cnlive.strike.xiaojiaspeaker.frame.presenter.UserManagerPresenter; | ||
| 17 | +import com.cnlive.strike.xiaojiaspeaker.frame.view.UserManagerView; | ||
| 18 | + | ||
| 19 | +/** | ||
| 20 | + * 使用者管理 | ||
| 21 | + */ | ||
| 22 | +public class UserManagerFragment extends MvpBindingFragment<UserManagerView, UserManagerPresenter, Object, FragmentUserManagerBinding> { | ||
| 23 | + private Button btn_invit; | ||
| 24 | + | ||
| 25 | + public static UserManagerFragment newInstance() { | ||
| 26 | + UserManagerFragment fragment = new UserManagerFragment(); | ||
| 27 | + return fragment; | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + @Override | ||
| 31 | + protected int getLayoutId() { | ||
| 32 | + return R.layout.fragment_user_manager; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + @Override | ||
| 36 | + public void onActivityCreated(@Nullable Bundle savedInstanceState) { | ||
| 37 | + super.onActivityCreated(savedInstanceState); | ||
| 38 | + StatusBarUtil.setStatusBarWrite(getActivity()); | ||
| 39 | + StatusBarUtil2.setColor(getActivity(), ContextCompat.getColor(getActivity(), R.color.white), 0); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + @Override | ||
| 43 | + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { | ||
| 44 | + super.onViewCreated(view, savedInstanceState); | ||
| 45 | + initTopBar(); | ||
| 46 | +// getPresenter().getFamilyRole(getActivity(), "123456", CommInfo.getFamilyId(getActivity())); | ||
| 47 | + if (null != getMvpView()) { | ||
| 48 | + getMvpView().initPopView(); | ||
| 49 | + getMvpView().initView(null); | ||
| 50 | + } | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + private void initTopBar() { | ||
| 54 | + if (null != binding) { | ||
| 55 | + binding.topbar.setTitle("使用者管理").setTextColor(ContextCompat.getColor(getActivity(), R.color.color_282828)); | ||
| 56 | + //设置返回按钮 | ||
| 57 | + binding.topbar.addLeftImageButton(R.drawable.icon_back, R.id.left_back).setOnClickListener(new View.OnClickListener() { | ||
| 58 | + @Override | ||
| 59 | + public void onClick(View view) { | ||
| 60 | + if (null != getActivity()) { | ||
| 61 | + getActivity().finish(); | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + }); | ||
| 65 | + //添加邀请者按钮 | ||
| 66 | + btn_invit = binding.topbar.addRightTextButton("邀请使用者", R.id.rightBtn); | ||
| 67 | + btn_invit.setTextSize(15); | ||
| 68 | + btn_invit.setTextColor(ContextCompat.getColor(getContext(),R.color.color_282828)); | ||
| 69 | + btn_invit.setOnClickListener(new View.OnClickListener() { | ||
| 70 | + @Override | ||
| 71 | + public void onClick(View view) { | ||
| 72 | + if (null != getMvpView()) { | ||
| 73 | + getMvpView().showPop(btn_invit); | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | + }); | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/widget/EditRoleDialog.java
0 → 100644
| 1 | +package com.cnlive.strike.xiaojiaspeaker.ui.widget; | ||
| 2 | + | ||
| 3 | +import android.app.Dialog; | ||
| 4 | +import android.content.Context; | ||
| 5 | +import android.os.Bundle; | ||
| 6 | +import android.support.annotation.NonNull; | ||
| 7 | +import android.support.v4.content.ContextCompat; | ||
| 8 | +import android.support.v7.widget.LinearLayoutManager; | ||
| 9 | +import android.support.v7.widget.RecyclerView; | ||
| 10 | +import android.view.LayoutInflater; | ||
| 11 | +import android.view.View; | ||
| 12 | +import android.view.ViewGroup; | ||
| 13 | +import android.view.WindowManager; | ||
| 14 | +import android.widget.Button; | ||
| 15 | +import android.widget.ImageView; | ||
| 16 | +import android.widget.LinearLayout; | ||
| 17 | +import android.widget.TextView; | ||
| 18 | + | ||
| 19 | +import com.cnlive.strike.application.GlideApp; | ||
| 20 | +import com.cnlive.strike.xiaojiaspeaker.R; | ||
| 21 | +import com.cnlive.strike.xiaojiaspeaker.model.RoleInfo; | ||
| 22 | +import com.cnlive.strike.xiaojiaspeaker.netWork.bean.FamilyRoleBean; | ||
| 23 | +import com.cnlive.strike.xiaojiaspeaker.ui.adapter.SetRoleAdapter; | ||
| 24 | + | ||
| 25 | +import org.w3c.dom.Text; | ||
| 26 | + | ||
| 27 | +import java.util.List; | ||
| 28 | + | ||
| 29 | + | ||
| 30 | +/** | ||
| 31 | + * 任务编辑对话框 | ||
| 32 | + * | ||
| 33 | + * @author ShinnyYang | ||
| 34 | + * @date 2019/3/27 14:11 | ||
| 35 | + */ | ||
| 36 | +public class EditRoleDialog extends Dialog { | ||
| 37 | + private Context context; | ||
| 38 | + private Button btn_cancel; | ||
| 39 | + private Button btn_ok; | ||
| 40 | + private LinearLayout ll_child; | ||
| 41 | + private RecyclerView rv_role; | ||
| 42 | + private ImageView iv_icon; | ||
| 43 | + private TextView tv_user_name; | ||
| 44 | + private View view; | ||
| 45 | + // private DialogInterface cancelInterface; | ||
| 46 | +// private DialogInterface okInterface; | ||
| 47 | + private LinearLayout.LayoutParams layoutParams; | ||
| 48 | + private List<RoleInfo> roleInfoList; | ||
| 49 | + private SetRoleAdapter setRoleAdapter; | ||
| 50 | + private OnClickListener onClickListener; | ||
| 51 | + | ||
| 52 | + public void setOnClickListener(OnClickListener onClickListener) { | ||
| 53 | + this.onClickListener = onClickListener; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public void setData(List<RoleInfo> roleInfoList, FamilyRoleBean.FamilyRoleListBean bean) { | ||
| 57 | + setRoleAdapter = new SetRoleAdapter(context, roleInfoList); | ||
| 58 | + setRoleAdapter.setGridCount(3); | ||
| 59 | + setRoleAdapter.setIsShowItemUserInfo(View.GONE); | ||
| 60 | + rv_role.setLayoutManager(new LinearLayoutManager(getContext())); | ||
| 61 | + rv_role.setAdapter(setRoleAdapter); | ||
| 62 | + GlideApp.with(context).load(bean.getUserMsg().getImage()).placeholder(R.drawable.touxiang).into(iv_icon); | ||
| 63 | + tv_user_name.setText(bean.getUserMsg().getNickName()); | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public EditRoleDialog(@NonNull Context context) { | ||
| 67 | + super(context, R.style.MyDialog); | ||
| 68 | + this.context = context; | ||
| 69 | + view = LayoutInflater.from(context).inflate(R.layout.dialog_edit_role, null); | ||
| 70 | + initView(view); | ||
| 71 | + layoutParams = new LinearLayout.LayoutParams((int) (getScreenWidth(context) * 0.8), ViewGroup.LayoutParams.WRAP_CONTENT); | ||
| 72 | + ll_child.setLayoutParams(layoutParams); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + | ||
| 76 | + public EditRoleDialog(@NonNull Context context, View customview, int themeResId) { | ||
| 77 | + super(context, themeResId); | ||
| 78 | + this.context = context; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + @Override | ||
| 83 | + protected void onCreate(Bundle savedInstanceState) { | ||
| 84 | + super.onCreate(savedInstanceState); | ||
| 85 | + //显示视图 | ||
| 86 | + this.setContentView(view); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + private void initView(View rootView) { | ||
| 90 | + this.btn_cancel = (Button) rootView.findViewById(R.id.btn_cancel); | ||
| 91 | + this.btn_ok = (Button) rootView.findViewById(R.id.btn_ok); | ||
| 92 | + this.ll_child = (LinearLayout) rootView.findViewById(R.id.ll_child); | ||
| 93 | + this.rv_role = (RecyclerView) rootView.findViewById(R.id.rv_role); | ||
| 94 | + this.iv_icon = (ImageView) rootView.findViewById(R.id.iv_icon); | ||
| 95 | + this.tv_user_name = (TextView) rootView.findViewById(R.id.tv_user_name); | ||
| 96 | + btn_cancel.setOnClickListener(new View.OnClickListener() { | ||
| 97 | + @Override | ||
| 98 | + public void onClick(View view) { | ||
| 99 | + if (null!=onClickListener){ | ||
| 100 | + onClickListener.onCancelClick(EditRoleDialog.this); | ||
| 101 | + } | ||
| 102 | + } | ||
| 103 | + }); | ||
| 104 | + btn_ok.setOnClickListener(new View.OnClickListener() { | ||
| 105 | + @Override | ||
| 106 | + public void onClick(View view) { | ||
| 107 | + if (null!=onClickListener){ | ||
| 108 | + onClickListener.onSaveClick(EditRoleDialog.this); | ||
| 109 | + } | ||
| 110 | + } | ||
| 111 | + }); | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + public interface OnClickListener { | ||
| 115 | + void onCancelClick(EditRoleDialog dialog); | ||
| 116 | + | ||
| 117 | + void onSaveClick(EditRoleDialog dialog); | ||
| 118 | + | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + /** | ||
| 122 | + * 获取屏幕宽度 | ||
| 123 | + * | ||
| 124 | + * @param context | ||
| 125 | + * @return | ||
| 126 | + */ | ||
| 127 | + public static int getScreenWidth(Context context) { | ||
| 128 | + WindowManager wm = (WindowManager) context | ||
| 129 | + .getSystemService(Context.WINDOW_SERVICE); | ||
| 130 | + int width = wm.getDefaultDisplay().getWidth(); | ||
| 131 | + return width; | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + /** | ||
| 135 | + * 获取屏幕高度 | ||
| 136 | + * | ||
| 137 | + * @param context | ||
| 138 | + * @return | ||
| 139 | + */ | ||
| 140 | + public static int getScreenHeight(Context context) { | ||
| 141 | + WindowManager wm = (WindowManager) context | ||
| 142 | + .getSystemService(Context.WINDOW_SERVICE); | ||
| 143 | + int height = wm.getDefaultDisplay().getHeight(); | ||
| 144 | + return height; | ||
| 145 | + } | ||
| 146 | +} |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/widget/SelectDialog.java
| @@ -2,6 +2,7 @@ package com.cnlive.strike.xiaojiaspeaker.ui.widget; | @@ -2,6 +2,7 @@ package com.cnlive.strike.xiaojiaspeaker.ui.widget; | ||
| 2 | 2 | ||
| 3 | import android.app.Dialog; | 3 | import android.app.Dialog; |
| 4 | import android.content.Context; | 4 | import android.content.Context; |
| 5 | +import android.graphics.Typeface; | ||
| 5 | import android.os.Bundle; | 6 | import android.os.Bundle; |
| 6 | import android.support.annotation.NonNull; | 7 | import android.support.annotation.NonNull; |
| 7 | import android.support.v4.content.ContextCompat; | 8 | import android.support.v4.content.ContextCompat; |
| @@ -61,6 +62,9 @@ public class SelectDialog extends Dialog { | @@ -61,6 +62,9 @@ public class SelectDialog extends Dialog { | ||
| 61 | } | 62 | } |
| 62 | } | 63 | } |
| 63 | 64 | ||
| 65 | + public void setTipTextStyle(Typeface typeface){ | ||
| 66 | + tv_dialog_tip.setTypeface(typeface); | ||
| 67 | + } | ||
| 64 | public void setTipMessage(String message) { | 68 | public void setTipMessage(String message) { |
| 65 | tv_dialog_tip.setText(message); | 69 | tv_dialog_tip.setText(message); |
| 66 | } | 70 | } |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/widget/popmenu/PopMenuAdapter.java
| @@ -70,6 +70,8 @@ public class PopMenuAdapter extends RecyclerView.Adapter { | @@ -70,6 +70,8 @@ public class PopMenuAdapter extends RecyclerView.Adapter { | ||
| 70 | } else { | 70 | } else { |
| 71 | binding.viewLine.setVisibility(View.VISIBLE); | 71 | binding.viewLine.setVisibility(View.VISIBLE); |
| 72 | } | 72 | } |
| 73 | + }else { | ||
| 74 | + binding.viewLine.setVisibility(View.GONE); | ||
| 73 | } | 75 | } |
| 74 | //判断图标是否显示 | 76 | //判断图标是否显示 |
| 75 | if (0 == popMenuInfoList.get(i).getImgDrawable() && TextUtils.isEmpty(popMenuInfoList.get(i).getNetImag())) { | 77 | if (0 == popMenuInfoList.get(i).getImgDrawable() && TextUtils.isEmpty(popMenuInfoList.get(i).getNetImag())) { |
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/util/GsonUtil.java
0 → 100644
| 1 | +package com.cnlive.strike.xiaojiaspeaker.util; | ||
| 2 | + | ||
| 3 | +import com.google.gson.Gson; | ||
| 4 | +import com.google.gson.JsonArray; | ||
| 5 | +import com.google.gson.JsonElement; | ||
| 6 | +import com.google.gson.JsonObject; | ||
| 7 | +import com.google.gson.JsonParser; | ||
| 8 | +import com.google.gson.reflect.TypeToken; | ||
| 9 | + | ||
| 10 | +import java.util.ArrayList; | ||
| 11 | +import java.util.List; | ||
| 12 | +import java.util.Map; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * Created by ShinnyYang | ||
| 16 | + * on 2016/12/19. | ||
| 17 | + */ | ||
| 18 | +public class GsonUtil { | ||
| 19 | + private static Gson gson = null; | ||
| 20 | + | ||
| 21 | + static { | ||
| 22 | + if (gson == null) { | ||
| 23 | + gson = new Gson(); | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + private GsonUtil() { | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + /** | ||
| 31 | + * 转成json | ||
| 32 | + * | ||
| 33 | + * @param object | ||
| 34 | + * @return | ||
| 35 | + */ | ||
| 36 | + public static String GsonString(Object object) { | ||
| 37 | + String gsonString = null; | ||
| 38 | + if (gson != null) { | ||
| 39 | + gsonString = gson.toJson(object); | ||
| 40 | + } | ||
| 41 | + return gsonString; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + /** | ||
| 45 | + * 转成bean | ||
| 46 | + * | ||
| 47 | + * @param gsonString | ||
| 48 | + * @param cls | ||
| 49 | + * @return | ||
| 50 | + */ | ||
| 51 | + public static <T> T GsonToBean(String gsonString, Class<T> cls) { | ||
| 52 | + T t = null; | ||
| 53 | + if (gson != null) { | ||
| 54 | + t = gson.fromJson(gsonString, cls); | ||
| 55 | + } | ||
| 56 | + return t; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + /** | ||
| 60 | + * 转成list | ||
| 61 | + * 解决泛型问题 | ||
| 62 | + * | ||
| 63 | + * @param json | ||
| 64 | + * @param cls | ||
| 65 | + * @param <T> | ||
| 66 | + * @return | ||
| 67 | + */ | ||
| 68 | + public static <T> List<T> jsonToList(String json, Class<T> cls) { | ||
| 69 | + try { | ||
| 70 | + Gson gson = new Gson(); | ||
| 71 | + List<T> list = new ArrayList<T>(); | ||
| 72 | + JsonArray array = new JsonParser().parse(json).getAsJsonArray(); | ||
| 73 | + for (final JsonElement elem : array) { | ||
| 74 | + list.add(gson.fromJson(elem, cls)); | ||
| 75 | + } | ||
| 76 | + return list; | ||
| 77 | + } catch (Exception e) { | ||
| 78 | + return null; | ||
| 79 | + } | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + /** | ||
| 84 | + * 转成list中有map的 | ||
| 85 | + * | ||
| 86 | + * @param gsonString | ||
| 87 | + * @return | ||
| 88 | + */ | ||
| 89 | + public static List<Map<String, String>> GsonToListMaps(String gsonString) { | ||
| 90 | + List<Map<String, String>> list = null; | ||
| 91 | + if (gson != null) { | ||
| 92 | + list = gson.fromJson(gsonString, | ||
| 93 | + new TypeToken<List<Map<String, String>>>() { | ||
| 94 | + }.getType()); | ||
| 95 | + } | ||
| 96 | + for (int i = 0; i < list.size(); i++) { | ||
| 97 | + for (Map.Entry<String, String> entry : list.get(i).entrySet()) { | ||
| 98 | + if (entry.getValue() == null) { | ||
| 99 | + entry.setValue(""); | ||
| 100 | + } | ||
| 101 | + } | ||
| 102 | + } | ||
| 103 | + return list; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + | ||
| 107 | + /** | ||
| 108 | + * 转成map的 | ||
| 109 | + * | ||
| 110 | + * @param gsonString | ||
| 111 | + * @return | ||
| 112 | + */ | ||
| 113 | + public static <T> Map<String, T> GsonToMaps(String gsonString) { | ||
| 114 | + Map<String, T> map = null; | ||
| 115 | + if (gson != null) { | ||
| 116 | + map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() { | ||
| 117 | + }.getType()); | ||
| 118 | + } | ||
| 119 | + return map; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + /** | ||
| 123 | + * 过滤null | ||
| 124 | + * | ||
| 125 | + * @param jsonElement | ||
| 126 | + * @return | ||
| 127 | + */ | ||
| 128 | + public static String StrConver(JsonElement jsonElement) { | ||
| 129 | + if (jsonElement == null || jsonElement.isJsonNull() || jsonElement.equals("null")) { | ||
| 130 | + return ""; | ||
| 131 | + } else { | ||
| 132 | + return jsonElement.getAsString(); | ||
| 133 | + } | ||
| 134 | + } | ||
| 135 | + | ||
| 136 | + public static int IntConver(JsonElement jsonElement) { | ||
| 137 | + if (jsonElement.isJsonNull()) { | ||
| 138 | + return 0; | ||
| 139 | + } else { | ||
| 140 | + return jsonElement.getAsInt(); | ||
| 141 | + } | ||
| 142 | + } | ||
| 143 | + | ||
| 144 | + public static JsonObject toJsonObject(String str) { | ||
| 145 | + return new JsonParser().parse(str).getAsJsonObject(); | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + public static JsonArray toJsonArray(String str) { | ||
| 149 | + return new JsonParser().parse(str).getAsJsonArray(); | ||
| 150 | + } | ||
| 151 | + | ||
| 152 | +} | ||
| 153 | + |
module_xiaojiaSoundBox/src/main/res/drawable-hdpi/icon_friend.png
0 → 100644
901 Bytes
module_xiaojiaSoundBox/src/main/res/drawable-hdpi/icon_gray_close.png
0 → 100644
1004 Bytes
module_xiaojiaSoundBox/src/main/res/drawable-hdpi/icon_qrcode.png
0 → 100644
554 Bytes
module_xiaojiaSoundBox/src/main/res/drawable-v21/selectable_item_white.xml
0 → 100644
module_xiaojiaSoundBox/src/main/res/drawable-xhdpi/icon_friend.png
0 → 100644
1.17 KB
module_xiaojiaSoundBox/src/main/res/drawable-xhdpi/icon_gray_close.png
0 → 100644
1.12 KB
module_xiaojiaSoundBox/src/main/res/drawable-xhdpi/icon_qrcode.png
0 → 100644
731 Bytes
module_xiaojiaSoundBox/src/main/res/drawable-xxhdpi/icon_friend.png
0 → 100644
2.21 KB
module_xiaojiaSoundBox/src/main/res/drawable-xxhdpi/icon_gray_close.png
0 → 100644
2 KB
module_xiaojiaSoundBox/src/main/res/drawable-xxhdpi/icon_qrcode.png
0 → 100644
1.16 KB
module_xiaojiaSoundBox/src/main/res/drawable/selectable_item_white.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | +<selector xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| 3 | + <item android:drawable="@drawable/abc_list_selector_disabled_holo_light" android:state_enabled="false" android:state_focused="true" android:state_pressed="true"/> | ||
| 4 | + <item android:drawable="@drawable/abc_list_selector_disabled_holo_light" android:state_enabled="false" android:state_focused="true"/> | ||
| 5 | + <item android:drawable="@color/line" android:state_focused="true" android:state_pressed="true"/> | ||
| 6 | + <item android:drawable="@color/line" android:state_focused="false" android:state_pressed="true"/> | ||
| 7 | + <item android:drawable="@color/white"/> | ||
| 8 | +</selector> | ||
| 9 | + |
module_xiaojiaSoundBox/src/main/res/drawable/selector_checkbox_no_default.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<selector xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| 3 | + <item android:drawable="@drawable/check_press" android:state_checked="true"/> | ||
| 4 | + <item android:drawable="@drawable/check_normal" android:state_checked="false" /> | ||
| 5 | + | ||
| 6 | +</selector> | ||
| 0 | \ No newline at end of file | 7 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/drawable/shape_green_stroke.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<shape xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| 3 | + <stroke | ||
| 4 | + android:width="1dp" | ||
| 5 | + android:color="@color/btn_green" /> | ||
| 6 | + <solid android:color="@color/white" /> | ||
| 7 | + <corners android:radius="20dp" /> | ||
| 8 | +</shape> | ||
| 0 | \ No newline at end of file | 9 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/activity_change_device_name.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<layout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
| 4 | + xmlns:tools="http://schemas.android.com/tools"> | ||
| 5 | + | ||
| 6 | + <LinearLayout | ||
| 7 | + android:layout_width="match_parent" | ||
| 8 | + android:layout_height="match_parent" | ||
| 9 | + android:orientation="vertical" | ||
| 10 | + tools:context=".ui.activity.ChangeDeviceNameActivity"> | ||
| 11 | + | ||
| 12 | + <com.qmuiteam.qmui.widget.QMUITopBar | ||
| 13 | + android:id="@+id/topbar" | ||
| 14 | + android:layout_width="match_parent" | ||
| 15 | + android:layout_height="?attr/qmui_topbar_height" | ||
| 16 | + android:background="@color/white" /> | ||
| 17 | + | ||
| 18 | + <LinearLayout | ||
| 19 | + android:layout_width="match_parent" | ||
| 20 | + android:layout_height="50dp" | ||
| 21 | + android:layout_marginLeft="10dp" | ||
| 22 | + android:layout_marginTop="20dp" | ||
| 23 | + android:gravity="center_vertical"> | ||
| 24 | + | ||
| 25 | + <TextView | ||
| 26 | + android:layout_width="wrap_content" | ||
| 27 | + android:layout_height="wrap_content" | ||
| 28 | + android:text="音箱名称" | ||
| 29 | + android:textColor="@color/color_282828" | ||
| 30 | + android:textSize="15sp" | ||
| 31 | + android:textStyle="bold" /> | ||
| 32 | + | ||
| 33 | + <EditText | ||
| 34 | + android:id="@+id/et_name" | ||
| 35 | + android:layout_width="0dp" | ||
| 36 | + android:layout_height="match_parent" | ||
| 37 | + android:layout_marginLeft="10dp" | ||
| 38 | + android:layout_marginRight="10dp" | ||
| 39 | + android:layout_weight="1" | ||
| 40 | + android:background="@null" | ||
| 41 | + android:maxLength="40" | ||
| 42 | + android:hint="请输入要修改的名称" | ||
| 43 | + android:textColor="@color/color_282828" | ||
| 44 | + android:textSize="14sp" /> | ||
| 45 | + | ||
| 46 | + <ImageView | ||
| 47 | + android:id="@+id/iv_close" | ||
| 48 | + android:layout_width="wrap_content" | ||
| 49 | + android:layout_height="wrap_content" | ||
| 50 | + android:layout_marginRight="20dp" | ||
| 51 | + android:background="@drawable/icon_gray_close" | ||
| 52 | + android:visibility="invisible" /> | ||
| 53 | + </LinearLayout> | ||
| 54 | + | ||
| 55 | + <View | ||
| 56 | + android:layout_width="match_parent" | ||
| 57 | + android:layout_height="1dp" | ||
| 58 | + android:layout_marginLeft="10dp" | ||
| 59 | + android:layout_marginRight="10dp" | ||
| 60 | + android:background="@color/line" /> | ||
| 61 | + | ||
| 62 | + <TextView | ||
| 63 | + android:layout_width="wrap_content" | ||
| 64 | + android:layout_height="wrap_content" | ||
| 65 | + android:layout_marginLeft="10dp" | ||
| 66 | + android:layout_marginTop="10dp" | ||
| 67 | + android:text="40个字符以内,支持汉字、字母、数字或下划线" | ||
| 68 | + android:textColor="@color/color_999999" | ||
| 69 | + android:textSize="12sp" /> | ||
| 70 | + | ||
| 71 | + <Button | ||
| 72 | + android:id="@+id/btn_next" | ||
| 73 | + android:layout_width="match_parent" | ||
| 74 | + android:layout_height="40dp" | ||
| 75 | + android:layout_alignParentBottom="true" | ||
| 76 | + android:layout_centerHorizontal="true" | ||
| 77 | + android:layout_marginLeft="30dp" | ||
| 78 | + android:layout_marginTop="20dp" | ||
| 79 | + android:layout_marginRight="30dp" | ||
| 80 | + android:background="@drawable/shape_btn_gray" | ||
| 81 | + android:clickable="false" | ||
| 82 | + android:text="保存" | ||
| 83 | + android:textColor="@color/white" | ||
| 84 | + android:textSize="16sp" | ||
| 85 | + android:textStyle="bold" /> | ||
| 86 | + </LinearLayout> | ||
| 87 | +</layout> | ||
| 0 | \ No newline at end of file | 88 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/activity_device_manager.xml
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <layout> | 2 | <layout> |
| 3 | 3 | ||
| 4 | - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | 4 | + <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 5 | xmlns:app="http://schemas.android.com/apk/res-auto" | 5 | xmlns:app="http://schemas.android.com/apk/res-auto" |
| 6 | xmlns:tools="http://schemas.android.com/tools" | 6 | xmlns:tools="http://schemas.android.com/tools" |
| 7 | android:layout_width="match_parent" | 7 | android:layout_width="match_parent" |
| @@ -14,234 +14,261 @@ | @@ -14,234 +14,261 @@ | ||
| 14 | android:id="@+id/topbar" | 14 | android:id="@+id/topbar" |
| 15 | android:layout_width="match_parent" | 15 | android:layout_width="match_parent" |
| 16 | android:layout_height="?attr/qmui_topbar_height" /> | 16 | android:layout_height="?attr/qmui_topbar_height" /> |
| 17 | - <!--音箱名称--> | ||
| 18 | - <LinearLayout | 17 | + |
| 18 | + <ScrollView | ||
| 19 | android:layout_width="match_parent" | 19 | android:layout_width="match_parent" |
| 20 | - android:layout_height="50dp" | ||
| 21 | - android:layout_marginTop="10dp" | ||
| 22 | - android:layout_marginBottom="10dp" | ||
| 23 | - android:background="@drawable/selectable_item_white" | ||
| 24 | - android:clickable="true"> | 20 | + android:layout_height="wrap_content" |
| 21 | + android:layout_below="@id/topbar"> | ||
| 25 | 22 | ||
| 26 | <LinearLayout | 23 | <LinearLayout |
| 27 | - android:layout_width="wrap_content" | ||
| 28 | - android:layout_height="match_parent" | ||
| 29 | - android:gravity="center|left"> | ||
| 30 | - | ||
| 31 | - <TextView | ||
| 32 | - android:id="@+id/tv_menu_title" | ||
| 33 | - android:layout_width="wrap_content" | ||
| 34 | - android:layout_height="wrap_content" | ||
| 35 | - android:layout_centerVertical="true" | ||
| 36 | - android:layout_marginLeft="10dp" | ||
| 37 | - android:layout_marginRight="10dp" | ||
| 38 | - android:maxLines="1" | ||
| 39 | - android:text="音箱名称" | ||
| 40 | - android:textColor="@color/color_282828" | ||
| 41 | - android:textSize="16sp" /> | ||
| 42 | - </LinearLayout> | 24 | + android:layout_width="match_parent" |
| 25 | + android:layout_height="wrap_content" | ||
| 26 | + android:orientation="vertical"> | ||
| 27 | + <!--音箱名称--> | ||
| 28 | + <LinearLayout | ||
| 29 | + android:id="@+id/ll_device_name" | ||
| 30 | + android:layout_width="match_parent" | ||
| 31 | + android:layout_height="50dp" | ||
| 32 | + android:layout_marginTop="10dp" | ||
| 33 | + android:layout_marginBottom="10dp" | ||
| 34 | + android:background="@drawable/selectable_item_white" | ||
| 35 | + android:clickable="true"> | ||
| 43 | 36 | ||
| 44 | - <LinearLayout | ||
| 45 | - android:layout_width="0dp" | ||
| 46 | - android:layout_height="match_parent" | ||
| 47 | - android:layout_weight="1" | ||
| 48 | - android:gravity="center|right"> | ||
| 49 | - | ||
| 50 | - <TextView | ||
| 51 | - android:id="@+id/tv_menu_detail" | ||
| 52 | - android:layout_width="wrap_content" | ||
| 53 | - android:layout_height="wrap_content" | ||
| 54 | - android:layout_centerVertical="true" | ||
| 55 | - android:layout_marginLeft="10dp" | ||
| 56 | - android:layout_marginRight="10dp" | ||
| 57 | - android:layout_toEndOf="@id/iv_right" | ||
| 58 | - android:layout_toRightOf="@id/tv_menu_title" | ||
| 59 | - android:gravity="center|right" | ||
| 60 | - android:maxLines="1" | ||
| 61 | - android:textColor="@color/color_C3C3C3" | ||
| 62 | - android:textSize="14sp" /> | ||
| 63 | - | ||
| 64 | - <ImageView | ||
| 65 | - android:id="@+id/iv_right" | ||
| 66 | - android:layout_width="7dp" | ||
| 67 | - android:layout_height="13dp" | ||
| 68 | - android:layout_marginRight="10dp" | ||
| 69 | - android:background="@drawable/icon_item_right_arrow" /> | 37 | + <LinearLayout |
| 38 | + android:layout_width="wrap_content" | ||
| 39 | + android:layout_height="match_parent" | ||
| 40 | + android:gravity="center|left"> | ||
| 70 | 41 | ||
| 71 | - </LinearLayout> | 42 | + <TextView |
| 43 | + android:id="@+id/tv_menu_title" | ||
| 44 | + android:layout_width="wrap_content" | ||
| 45 | + android:layout_height="wrap_content" | ||
| 46 | + android:layout_centerVertical="true" | ||
| 47 | + android:layout_marginLeft="10dp" | ||
| 48 | + android:layout_marginRight="10dp" | ||
| 49 | + android:maxLines="1" | ||
| 50 | + android:text="音箱名称" | ||
| 51 | + android:textColor="@color/color_282828" | ||
| 52 | + android:textSize="16sp" /> | ||
| 53 | + </LinearLayout> | ||
| 72 | 54 | ||
| 73 | - </LinearLayout> | ||
| 74 | - <!-- WIFI设置--> | ||
| 75 | - <LinearLayout | ||
| 76 | - android:layout_width="match_parent" | ||
| 77 | - android:layout_height="50dp" | ||
| 78 | - android:layout_marginTop="10dp" | ||
| 79 | - android:layout_marginBottom="10dp" | ||
| 80 | - android:background="@drawable/selectable_item_white" | ||
| 81 | - android:clickable="true"> | 55 | + <LinearLayout |
| 56 | + android:layout_width="0dp" | ||
| 57 | + android:layout_height="match_parent" | ||
| 58 | + android:layout_weight="1" | ||
| 59 | + android:gravity="center|right"> | ||
| 82 | 60 | ||
| 83 | - <LinearLayout | ||
| 84 | - android:layout_width="wrap_content" | ||
| 85 | - android:layout_height="match_parent" | ||
| 86 | - android:gravity="center|left"> | ||
| 87 | - | ||
| 88 | - <TextView | ||
| 89 | - android:id="@+id/tv_wifi_title" | ||
| 90 | - android:layout_width="wrap_content" | ||
| 91 | - android:layout_height="wrap_content" | ||
| 92 | - android:layout_centerVertical="true" | ||
| 93 | - android:layout_marginLeft="10dp" | ||
| 94 | - android:layout_marginRight="10dp" | ||
| 95 | - android:maxLines="1" | ||
| 96 | - android:text="WIFI设置" | ||
| 97 | - android:textColor="@color/color_282828" | ||
| 98 | - android:textSize="16sp" /> | ||
| 99 | - </LinearLayout> | 61 | + <TextView |
| 62 | + android:id="@+id/tv_menu_detail" | ||
| 63 | + android:layout_width="wrap_content" | ||
| 64 | + android:layout_height="wrap_content" | ||
| 65 | + android:layout_centerVertical="true" | ||
| 66 | + android:layout_marginLeft="10dp" | ||
| 67 | + android:layout_marginRight="10dp" | ||
| 68 | + android:layout_toEndOf="@id/iv_right" | ||
| 69 | + android:layout_toRightOf="@id/tv_menu_title" | ||
| 70 | + android:gravity="center|right" | ||
| 71 | + android:maxLines="1" | ||
| 72 | + android:textColor="@color/color_C3C3C3" | ||
| 73 | + android:textSize="14sp" /> | ||
| 100 | 74 | ||
| 101 | - <LinearLayout | ||
| 102 | - android:layout_width="0dp" | ||
| 103 | - android:layout_height="match_parent" | ||
| 104 | - android:layout_weight="1" | ||
| 105 | - android:gravity="center|right"> | ||
| 106 | - | ||
| 107 | - <TextView | ||
| 108 | - android:id="@+id/tv_wifi_detail" | ||
| 109 | - android:layout_width="wrap_content" | ||
| 110 | - android:layout_height="wrap_content" | ||
| 111 | - android:layout_centerVertical="true" | ||
| 112 | - android:layout_marginLeft="10dp" | ||
| 113 | - android:layout_marginRight="10dp" | ||
| 114 | - android:layout_toEndOf="@id/iv_right" | ||
| 115 | - android:layout_toRightOf="@id/tv_menu_title" | ||
| 116 | - android:gravity="center|right" | ||
| 117 | - android:maxLines="1" | ||
| 118 | - android:textColor="@color/color_C3C3C3" | ||
| 119 | - android:textSize="14sp" /> | ||
| 120 | - | ||
| 121 | - <ImageView | ||
| 122 | - android:layout_width="7dp" | ||
| 123 | - android:layout_height="13dp" | ||
| 124 | - android:layout_marginRight="10dp" | ||
| 125 | - android:background="@drawable/icon_item_right_arrow" /> | 75 | + <ImageView |
| 76 | + android:id="@+id/iv_right" | ||
| 77 | + android:layout_width="7dp" | ||
| 78 | + android:layout_height="13dp" | ||
| 79 | + android:layout_marginRight="10dp" | ||
| 80 | + android:background="@drawable/icon_item_right_arrow" /> | ||
| 126 | 81 | ||
| 127 | - </LinearLayout> | 82 | + </LinearLayout> |
| 128 | 83 | ||
| 129 | - </LinearLayout> | ||
| 130 | - <!-- 设备信息--> | ||
| 131 | - <LinearLayout | ||
| 132 | - android:layout_width="match_parent" | ||
| 133 | - android:layout_height="50dp" | ||
| 134 | - android:layout_marginTop="10dp" | ||
| 135 | - android:layout_marginBottom="10dp" | ||
| 136 | - android:background="@drawable/selectable_item_white" | ||
| 137 | - android:clickable="true"> | 84 | + </LinearLayout> |
| 85 | + <!-- WIFI设置--> | ||
| 86 | + <LinearLayout | ||
| 87 | + android:id="@+id/ll_wifi_setting" | ||
| 88 | + android:layout_width="match_parent" | ||
| 89 | + android:layout_height="50dp" | ||
| 90 | + android:layout_marginTop="10dp" | ||
| 91 | + android:layout_marginBottom="10dp" | ||
| 92 | + android:background="@drawable/selectable_item_white" | ||
| 93 | + android:clickable="true"> | ||
| 138 | 94 | ||
| 139 | - <LinearLayout | ||
| 140 | - android:layout_width="wrap_content" | ||
| 141 | - android:layout_height="match_parent" | ||
| 142 | - android:gravity="center|left"> | ||
| 143 | - | ||
| 144 | - <TextView | ||
| 145 | - android:id="@+id/tv_device_info" | ||
| 146 | - android:layout_width="wrap_content" | ||
| 147 | - android:layout_height="wrap_content" | ||
| 148 | - android:layout_centerVertical="true" | ||
| 149 | - android:layout_marginLeft="10dp" | ||
| 150 | - android:layout_marginRight="10dp" | ||
| 151 | - android:maxLines="1" | ||
| 152 | - android:text="设备信息" | ||
| 153 | - android:textColor="@color/color_282828" | ||
| 154 | - android:textSize="16sp" /> | ||
| 155 | - </LinearLayout> | 95 | + <LinearLayout |
| 96 | + android:layout_width="wrap_content" | ||
| 97 | + android:layout_height="match_parent" | ||
| 98 | + android:gravity="center|left"> | ||
| 156 | 99 | ||
| 157 | - <LinearLayout | ||
| 158 | - android:layout_width="0dp" | ||
| 159 | - android:layout_height="match_parent" | ||
| 160 | - android:layout_weight="1" | ||
| 161 | - android:gravity="center|right"> | ||
| 162 | - | ||
| 163 | - <TextView | ||
| 164 | - android:id="@+id/tv_device_info_detail" | ||
| 165 | - android:layout_width="wrap_content" | ||
| 166 | - android:layout_height="wrap_content" | ||
| 167 | - android:layout_centerVertical="true" | ||
| 168 | - android:layout_marginLeft="10dp" | ||
| 169 | - android:layout_marginRight="10dp" | ||
| 170 | - android:layout_toEndOf="@id/iv_right" | ||
| 171 | - android:layout_toRightOf="@id/tv_menu_title" | ||
| 172 | - android:gravity="center|right" | ||
| 173 | - android:maxLines="1" | ||
| 174 | - android:textColor="@color/color_C3C3C3" | ||
| 175 | - android:textSize="14sp" /> | ||
| 176 | - | ||
| 177 | - <ImageView | ||
| 178 | - android:layout_width="7dp" | ||
| 179 | - android:layout_height="13dp" | ||
| 180 | - android:layout_marginRight="10dp" | ||
| 181 | - android:background="@drawable/icon_item_right_arrow" /> | 100 | + <TextView |
| 101 | + android:id="@+id/tv_wifi_title" | ||
| 102 | + android:layout_width="wrap_content" | ||
| 103 | + android:layout_height="wrap_content" | ||
| 104 | + android:layout_centerVertical="true" | ||
| 105 | + android:layout_marginLeft="10dp" | ||
| 106 | + android:layout_marginRight="10dp" | ||
| 107 | + android:maxLines="1" | ||
| 108 | + android:text="WIFI设置" | ||
| 109 | + android:textColor="@color/color_282828" | ||
| 110 | + android:textSize="16sp" /> | ||
| 111 | + </LinearLayout> | ||
| 182 | 112 | ||
| 183 | - </LinearLayout> | 113 | + <LinearLayout |
| 114 | + android:layout_width="0dp" | ||
| 115 | + android:layout_height="match_parent" | ||
| 116 | + android:layout_weight="1" | ||
| 117 | + android:gravity="center|right"> | ||
| 184 | 118 | ||
| 185 | - </LinearLayout> | ||
| 186 | - <!-- 固件升级--> | ||
| 187 | - <LinearLayout | ||
| 188 | - android:layout_width="match_parent" | ||
| 189 | - android:layout_height="50dp" | ||
| 190 | - android:layout_marginTop="10dp" | ||
| 191 | - android:layout_marginBottom="10dp" | ||
| 192 | - android:background="@drawable/selectable_item_white" | ||
| 193 | - android:clickable="true"> | 119 | + <TextView |
| 120 | + android:id="@+id/tv_wifi_detail" | ||
| 121 | + android:layout_width="wrap_content" | ||
| 122 | + android:layout_height="wrap_content" | ||
| 123 | + android:layout_centerVertical="true" | ||
| 124 | + android:layout_marginLeft="10dp" | ||
| 125 | + android:layout_marginRight="10dp" | ||
| 126 | + android:layout_toEndOf="@id/iv_right" | ||
| 127 | + android:layout_toRightOf="@id/tv_menu_title" | ||
| 128 | + android:gravity="center|right" | ||
| 129 | + android:maxLines="1" | ||
| 130 | + android:textColor="@color/color_C3C3C3" | ||
| 131 | + android:textSize="14sp" /> | ||
| 194 | 132 | ||
| 195 | - <LinearLayout | ||
| 196 | - android:layout_width="wrap_content" | ||
| 197 | - android:layout_height="match_parent" | ||
| 198 | - android:gravity="center|left"> | ||
| 199 | - | ||
| 200 | - <TextView | ||
| 201 | - android:id="@+id/tv_device_update" | ||
| 202 | - android:layout_width="wrap_content" | ||
| 203 | - android:layout_height="wrap_content" | ||
| 204 | - android:layout_centerVertical="true" | ||
| 205 | - android:layout_marginLeft="10dp" | ||
| 206 | - android:layout_marginRight="10dp" | ||
| 207 | - android:maxLines="1" | ||
| 208 | - android:text="固件升级" | ||
| 209 | - android:textColor="@color/color_282828" | ||
| 210 | - android:textSize="16sp" /> | ||
| 211 | - </LinearLayout> | 133 | + <ImageView |
| 134 | + android:layout_width="7dp" | ||
| 135 | + android:layout_height="13dp" | ||
| 136 | + android:layout_marginRight="10dp" | ||
| 137 | + android:background="@drawable/icon_item_right_arrow" /> | ||
| 212 | 138 | ||
| 213 | - <LinearLayout | ||
| 214 | - android:layout_width="0dp" | ||
| 215 | - android:layout_height="match_parent" | ||
| 216 | - android:layout_weight="1" | ||
| 217 | - android:gravity="center|right"> | ||
| 218 | - | ||
| 219 | - <TextView | ||
| 220 | - android:id="@+id/tv_device_update_detail" | ||
| 221 | - android:layout_width="wrap_content" | ||
| 222 | - android:layout_height="wrap_content" | ||
| 223 | - android:layout_centerVertical="true" | ||
| 224 | - android:layout_marginLeft="10dp" | ||
| 225 | - android:layout_marginRight="10dp" | ||
| 226 | - android:layout_toEndOf="@id/iv_right" | ||
| 227 | - android:layout_toRightOf="@id/tv_menu_title" | ||
| 228 | - android:gravity="center|right" | ||
| 229 | - android:maxLines="1" | ||
| 230 | - android:textColor="@color/color_C3C3C3" | ||
| 231 | - android:textSize="14sp" /> | ||
| 232 | - | ||
| 233 | - <ImageView | ||
| 234 | - android:layout_width="7dp" | ||
| 235 | - android:layout_height="13dp" | ||
| 236 | - android:layout_marginRight="10dp" | ||
| 237 | - android:background="@drawable/icon_item_right_arrow" /> | 139 | + </LinearLayout> |
| 140 | + | ||
| 141 | + </LinearLayout> | ||
| 142 | + <!-- 设备信息--> | ||
| 143 | + <LinearLayout | ||
| 144 | + android:id="@+id/ll_device_info" | ||
| 145 | + android:layout_width="match_parent" | ||
| 146 | + android:layout_height="50dp" | ||
| 147 | + android:layout_marginTop="10dp" | ||
| 148 | + android:layout_marginBottom="10dp" | ||
| 149 | + android:background="@drawable/selectable_item_white" | ||
| 150 | + android:clickable="true"> | ||
| 151 | + | ||
| 152 | + <LinearLayout | ||
| 153 | + android:layout_width="wrap_content" | ||
| 154 | + android:layout_height="match_parent" | ||
| 155 | + android:gravity="center|left"> | ||
| 156 | + | ||
| 157 | + <TextView | ||
| 158 | + android:id="@+id/tv_device_info" | ||
| 159 | + android:layout_width="wrap_content" | ||
| 160 | + android:layout_height="wrap_content" | ||
| 161 | + android:layout_centerVertical="true" | ||
| 162 | + android:layout_marginLeft="10dp" | ||
| 163 | + android:layout_marginRight="10dp" | ||
| 164 | + android:maxLines="1" | ||
| 165 | + android:text="设备信息" | ||
| 166 | + android:textColor="@color/color_282828" | ||
| 167 | + android:textSize="16sp" /> | ||
| 168 | + </LinearLayout> | ||
| 169 | + | ||
| 170 | + <LinearLayout | ||
| 171 | + android:layout_width="0dp" | ||
| 172 | + android:layout_height="match_parent" | ||
| 173 | + android:layout_weight="1" | ||
| 174 | + android:gravity="center|right"> | ||
| 175 | + | ||
| 176 | + <TextView | ||
| 177 | + android:id="@+id/tv_device_info_detail" | ||
| 178 | + android:layout_width="wrap_content" | ||
| 179 | + android:layout_height="wrap_content" | ||
| 180 | + android:layout_centerVertical="true" | ||
| 181 | + android:layout_marginLeft="10dp" | ||
| 182 | + android:layout_marginRight="10dp" | ||
| 183 | + android:layout_toEndOf="@id/iv_right" | ||
| 184 | + android:layout_toRightOf="@id/tv_menu_title" | ||
| 185 | + android:gravity="center|right" | ||
| 186 | + android:maxLines="1" | ||
| 187 | + android:textColor="@color/color_C3C3C3" | ||
| 188 | + android:textSize="14sp" /> | ||
| 189 | + | ||
| 190 | + <ImageView | ||
| 191 | + android:layout_width="7dp" | ||
| 192 | + android:layout_height="13dp" | ||
| 193 | + android:layout_marginRight="10dp" | ||
| 194 | + android:background="@drawable/icon_item_right_arrow" /> | ||
| 195 | + | ||
| 196 | + </LinearLayout> | ||
| 238 | 197 | ||
| 198 | + </LinearLayout> | ||
| 199 | + <!-- 固件升级--> | ||
| 200 | + <LinearLayout | ||
| 201 | + android:id="@+id/ll_device_update" | ||
| 202 | + android:layout_width="match_parent" | ||
| 203 | + android:layout_height="50dp" | ||
| 204 | + android:layout_marginTop="10dp" | ||
| 205 | + android:layout_marginBottom="10dp" | ||
| 206 | + android:background="@drawable/selectable_item_white" | ||
| 207 | + android:clickable="true"> | ||
| 208 | + | ||
| 209 | + <LinearLayout | ||
| 210 | + android:layout_width="wrap_content" | ||
| 211 | + android:layout_height="match_parent" | ||
| 212 | + android:gravity="center|left"> | ||
| 213 | + | ||
| 214 | + <TextView | ||
| 215 | + android:id="@+id/tv_device_update" | ||
| 216 | + android:layout_width="wrap_content" | ||
| 217 | + android:layout_height="wrap_content" | ||
| 218 | + android:layout_centerVertical="true" | ||
| 219 | + android:layout_marginLeft="10dp" | ||
| 220 | + android:layout_marginRight="10dp" | ||
| 221 | + android:maxLines="1" | ||
| 222 | + android:text="固件升级" | ||
| 223 | + android:textColor="@color/color_282828" | ||
| 224 | + android:textSize="16sp" /> | ||
| 225 | + </LinearLayout> | ||
| 226 | + | ||
| 227 | + <LinearLayout | ||
| 228 | + android:layout_width="0dp" | ||
| 229 | + android:layout_height="match_parent" | ||
| 230 | + android:layout_weight="1" | ||
| 231 | + android:gravity="center|right"> | ||
| 232 | + | ||
| 233 | + <TextView | ||
| 234 | + android:id="@+id/tv_device_update_detail" | ||
| 235 | + android:layout_width="wrap_content" | ||
| 236 | + android:layout_height="wrap_content" | ||
| 237 | + android:layout_centerVertical="true" | ||
| 238 | + android:layout_marginLeft="10dp" | ||
| 239 | + android:layout_marginRight="10dp" | ||
| 240 | + android:layout_toEndOf="@id/iv_right" | ||
| 241 | + android:layout_toRightOf="@id/tv_menu_title" | ||
| 242 | + android:gravity="center|right" | ||
| 243 | + android:maxLines="1" | ||
| 244 | + android:textColor="@color/color_C3C3C3" | ||
| 245 | + android:textSize="14sp" /> | ||
| 246 | + | ||
| 247 | + <ImageView | ||
| 248 | + android:layout_width="7dp" | ||
| 249 | + android:layout_height="13dp" | ||
| 250 | + android:layout_marginRight="10dp" | ||
| 251 | + android:background="@drawable/icon_item_right_arrow" /> | ||
| 252 | + | ||
| 253 | + </LinearLayout> | ||
| 254 | + | ||
| 255 | + </LinearLayout> | ||
| 239 | </LinearLayout> | 256 | </LinearLayout> |
| 257 | + </ScrollView> | ||
| 240 | 258 | ||
| 241 | - </LinearLayout> | 259 | + <TextView |
| 260 | + android:layout_width="match_parent" | ||
| 261 | + android:layout_height="60dp" | ||
| 262 | + android:layout_alignParentBottom="true" | ||
| 263 | + android:background="@drawable/selectable_item_white" | ||
| 264 | + android:clickable="true" | ||
| 265 | + android:gravity="center" | ||
| 266 | + android:text="删除设备" | ||
| 267 | + android:textColor="@color/color_EB3D3F" | ||
| 268 | + android:textSize="15sp" /> | ||
| 242 | <!-- <RelativeLayout--> | 269 | <!-- <RelativeLayout--> |
| 243 | <!-- android:id="@+id/fragment_container"--> | 270 | <!-- android:id="@+id/fragment_container"--> |
| 244 | <!-- android:layout_width="match_parent"--> | 271 | <!-- android:layout_width="match_parent"--> |
| 245 | <!-- android:layout_height="match_parent"></RelativeLayout>--> | 272 | <!-- android:layout_height="match_parent"></RelativeLayout>--> |
| 246 | - </LinearLayout> | 273 | + </RelativeLayout> |
| 247 | </layout> | 274 | </layout> |
| 248 | \ No newline at end of file | 275 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/activity_user_manager.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
| 4 | + xmlns:tools="http://schemas.android.com/tools" | ||
| 5 | + android:layout_width="match_parent" | ||
| 6 | + android:layout_height="match_parent" | ||
| 7 | + tools:context=".ui.activity.SearchDeviceActivity"> | ||
| 8 | + | ||
| 9 | + | ||
| 10 | + <RelativeLayout | ||
| 11 | + android:id="@+id/fragment_container" | ||
| 12 | + android:layout_width="match_parent" | ||
| 13 | + android:layout_height="match_parent"></RelativeLayout> | ||
| 14 | +</RelativeLayout> | ||
| 0 | \ No newline at end of file | 15 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/dialog_edit_role.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:layout_width="match_parent" | ||
| 4 | + android:layout_height="wrap_content" | ||
| 5 | + android:gravity="center_horizontal"> | ||
| 6 | + | ||
| 7 | + | ||
| 8 | + <LinearLayout | ||
| 9 | + android:id="@+id/ll_child" | ||
| 10 | + android:layout_width="match_parent" | ||
| 11 | + android:layout_height="wrap_content" | ||
| 12 | + android:background="@drawable/free_dialog_bg" | ||
| 13 | + android:orientation="vertical" | ||
| 14 | + android:paddingTop="10dp"> | ||
| 15 | + | ||
| 16 | + <TextView | ||
| 17 | + android:id="@+id/tv_dialog_tip" | ||
| 18 | + android:layout_width="wrap_content" | ||
| 19 | + android:layout_height="wrap_content" | ||
| 20 | + android:layout_gravity="center" | ||
| 21 | + android:layout_marginTop="15dp" | ||
| 22 | + android:gravity="center" | ||
| 23 | + android:text="编辑角色" | ||
| 24 | + android:textColor="@color/black" | ||
| 25 | + android:textSize="20sp" /> | ||
| 26 | + | ||
| 27 | + | ||
| 28 | + <View | ||
| 29 | + android:layout_width="match_parent" | ||
| 30 | + android:layout_height="1dp" | ||
| 31 | + android:layout_marginLeft="10dp" | ||
| 32 | + android:layout_marginTop="15dp" | ||
| 33 | + android:layout_marginRight="10dp" | ||
| 34 | + android:background="@color/line" /> | ||
| 35 | + | ||
| 36 | + <LinearLayout | ||
| 37 | + android:layout_width="match_parent" | ||
| 38 | + android:layout_height="60dp" | ||
| 39 | + android:gravity="center"> | ||
| 40 | + | ||
| 41 | + <ImageView | ||
| 42 | + android:id="@+id/iv_icon" | ||
| 43 | + android:layout_width="40dp" | ||
| 44 | + android:layout_height="40dp" /> | ||
| 45 | + | ||
| 46 | + <TextView | ||
| 47 | + android:id="@+id/tv_user_name" | ||
| 48 | + android:layout_width="wrap_content" | ||
| 49 | + android:layout_height="wrap_content" | ||
| 50 | + android:layout_marginLeft="10dp" | ||
| 51 | + android:text="用户昵称" | ||
| 52 | + android:textColor="@color/color_282828" | ||
| 53 | + android:textSize="17sp" /> | ||
| 54 | + </LinearLayout> | ||
| 55 | + | ||
| 56 | + <android.support.v7.widget.RecyclerView | ||
| 57 | + android:id="@+id/rv_role" | ||
| 58 | + android:layout_width="match_parent" | ||
| 59 | + android:layout_height="wrap_content" | ||
| 60 | + android:minHeight="50dp" | ||
| 61 | + android:paddingLeft="10dp" /> | ||
| 62 | + | ||
| 63 | + <View | ||
| 64 | + android:layout_width="match_parent" | ||
| 65 | + android:layout_height="1dp" | ||
| 66 | + android:layout_marginLeft="10dp" | ||
| 67 | + android:layout_marginRight="10dp" | ||
| 68 | + android:background="@color/line" /> | ||
| 69 | + | ||
| 70 | + <LinearLayout | ||
| 71 | + android:layout_width="match_parent" | ||
| 72 | + android:layout_height="40dp" | ||
| 73 | + android:orientation="horizontal"> | ||
| 74 | + | ||
| 75 | + | ||
| 76 | + <LinearLayout | ||
| 77 | + android:layout_width="0dp" | ||
| 78 | + android:layout_height="match_parent" | ||
| 79 | + android:layout_gravity="center" | ||
| 80 | + android:layout_weight="1" | ||
| 81 | + android:gravity="center"> | ||
| 82 | + | ||
| 83 | + <Button | ||
| 84 | + android:id="@+id/btn_cancel" | ||
| 85 | + android:layout_width="match_parent" | ||
| 86 | + android:layout_height="match_parent" | ||
| 87 | + android:layout_gravity="center" | ||
| 88 | + android:background="@drawable/selector_dialog_btn_left" | ||
| 89 | + android:text="取消" | ||
| 90 | + android:textColor="@color/color_282828" | ||
| 91 | + android:textSize="17sp" /> | ||
| 92 | + </LinearLayout> | ||
| 93 | + | ||
| 94 | + <View | ||
| 95 | + android:layout_width="1dp" | ||
| 96 | + android:layout_height="match_parent" | ||
| 97 | + android:background="@color/line" /> | ||
| 98 | + | ||
| 99 | + <LinearLayout | ||
| 100 | + android:layout_width="0dp" | ||
| 101 | + android:layout_height="match_parent" | ||
| 102 | + android:layout_gravity="center" | ||
| 103 | + android:layout_weight="1" | ||
| 104 | + android:gravity="center"> | ||
| 105 | + | ||
| 106 | + <Button | ||
| 107 | + android:id="@+id/btn_ok" | ||
| 108 | + android:layout_width="match_parent" | ||
| 109 | + android:layout_height="match_parent" | ||
| 110 | + android:layout_gravity="center" | ||
| 111 | + android:background="@drawable/selector_dialog_btn_right" | ||
| 112 | + android:text="保存" | ||
| 113 | + android:textColor="@color/btn_green" | ||
| 114 | + android:textSize="17sp" /> | ||
| 115 | + </LinearLayout> | ||
| 116 | + | ||
| 117 | + </LinearLayout> | ||
| 118 | + </LinearLayout> | ||
| 119 | +</LinearLayout> |
module_xiaojiaSoundBox/src/main/res/layout/fragment_user_manager.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:orientation="vertical"> | ||
| 8 | + | ||
| 9 | + <com.qmuiteam.qmui.widget.QMUITopBar | ||
| 10 | + android:id="@+id/topbar" | ||
| 11 | + android:layout_width="match_parent" | ||
| 12 | + android:layout_height="?attr/qmui_topbar_height" /> | ||
| 13 | + | ||
| 14 | + <FrameLayout | ||
| 15 | + android:layout_width="match_parent" | ||
| 16 | + android:layout_height="45dp" | ||
| 17 | + android:background="@color/color_F7B054"> | ||
| 18 | + | ||
| 19 | + <TextView | ||
| 20 | + android:layout_width="300dp" | ||
| 21 | + android:layout_height="wrap_content" | ||
| 22 | + android:layout_gravity="center" | ||
| 23 | + android:text="使用者可以共同管理音箱,最多支持10个人管理" | ||
| 24 | + android:textColor="@color/white" | ||
| 25 | + android:textSize="14sp" /> | ||
| 26 | + | ||
| 27 | + <LinearLayout | ||
| 28 | + android:layout_width="wrap_content" | ||
| 29 | + android:layout_height="match_parent" | ||
| 30 | + android:layout_gravity="right" | ||
| 31 | + android:clickable="true" | ||
| 32 | + android:gravity="center" | ||
| 33 | + android:paddingRight="10dp"> | ||
| 34 | + | ||
| 35 | + <ImageView | ||
| 36 | + android:layout_width="25dp" | ||
| 37 | + android:layout_height="25dp" | ||
| 38 | + android:background="@drawable/icon_set_role_close" /> | ||
| 39 | + </LinearLayout> | ||
| 40 | + </FrameLayout> | ||
| 41 | + | ||
| 42 | + <FrameLayout | ||
| 43 | + android:layout_width="match_parent" | ||
| 44 | + android:layout_height="match_parent"> | ||
| 45 | + | ||
| 46 | + <LinearLayout | ||
| 47 | + android:layout_width="match_parent" | ||
| 48 | + android:layout_height="match_parent" | ||
| 49 | + android:orientation="vertical"> | ||
| 50 | + | ||
| 51 | + <android.support.v7.widget.RecyclerView | ||
| 52 | + android:id="@+id/rv_user_manager_list" | ||
| 53 | + android:layout_width="match_parent" | ||
| 54 | + android:layout_height="0dp" | ||
| 55 | + android:layout_weight="1" /> | ||
| 56 | + | ||
| 57 | + <LinearLayout | ||
| 58 | + android:layout_width="match_parent" | ||
| 59 | + android:layout_height="wrap_content" | ||
| 60 | + android:gravity="center" | ||
| 61 | + android:orientation="vertical"> | ||
| 62 | + | ||
| 63 | + <Button | ||
| 64 | + android:id="@+id/btn_invit_friend" | ||
| 65 | + android:layout_width="match_parent" | ||
| 66 | + android:layout_height="40dp" | ||
| 67 | + android:layout_alignParentBottom="true" | ||
| 68 | + android:layout_centerHorizontal="true" | ||
| 69 | + android:layout_marginLeft="40dp" | ||
| 70 | + android:layout_marginTop="10dp" | ||
| 71 | + android:layout_marginRight="40dp" | ||
| 72 | + android:background="@drawable/selector_btn_green" | ||
| 73 | + android:text="邀请网家家好友" | ||
| 74 | + android:textColor="@color/white" | ||
| 75 | + android:textSize="16sp" | ||
| 76 | + android:textStyle="bold" /> | ||
| 77 | + | ||
| 78 | + <Button | ||
| 79 | + android:id="@+id/btn_qrcode" | ||
| 80 | + android:layout_width="match_parent" | ||
| 81 | + android:layout_height="40dp" | ||
| 82 | + android:layout_alignParentBottom="true" | ||
| 83 | + android:layout_centerHorizontal="true" | ||
| 84 | + android:layout_marginLeft="40dp" | ||
| 85 | + android:layout_marginTop="20dp" | ||
| 86 | + android:layout_marginRight="40dp" | ||
| 87 | + android:layout_marginBottom="30dp" | ||
| 88 | + android:background="@drawable/selector_btn_green" | ||
| 89 | + android:text="生成二维码邀请" | ||
| 90 | + android:textColor="@color/white" | ||
| 91 | + android:textSize="16sp" | ||
| 92 | + android:textStyle="bold" /> | ||
| 93 | + </LinearLayout> | ||
| 94 | + </LinearLayout> | ||
| 95 | + | ||
| 96 | + | ||
| 97 | + <com.cnlive.strike.ui.widget.UIEmptyView | ||
| 98 | + android:id="@+id/empty_layout" | ||
| 99 | + android:layout_width="match_parent" | ||
| 100 | + android:layout_height="match_parent" | ||
| 101 | + android:background="@color/color_fff" | ||
| 102 | + android:visibility="gone" /> | ||
| 103 | + </FrameLayout> | ||
| 104 | + </LinearLayout> | ||
| 105 | +</layout> | ||
| 0 | \ No newline at end of file | 106 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/item_list_set_role.xml
| @@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
| 16 | android:orientation="vertical"> | 16 | android:orientation="vertical"> |
| 17 | 17 | ||
| 18 | <LinearLayout | 18 | <LinearLayout |
| 19 | + android:id="@+id/ll_user_info" | ||
| 19 | android:layout_width="match_parent" | 20 | android:layout_width="match_parent" |
| 20 | android:layout_height="60dp" | 21 | android:layout_height="60dp" |
| 21 | android:gravity="center_vertical"> | 22 | android:gravity="center_vertical"> |
module_xiaojiaSoundBox/src/main/res/layout/item_list_user_host.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="60dp" | ||
| 7 | + android:layout_marginBottom="10dp" | ||
| 8 | + android:background="@color/white" | ||
| 9 | + android:gravity="center_vertical"> | ||
| 10 | + | ||
| 11 | + <ImageView | ||
| 12 | + android:id="@+id/iv_icon" | ||
| 13 | + android:layout_width="40dp" | ||
| 14 | + android:layout_height="40dp" | ||
| 15 | + android:layout_marginLeft="10dp" /> | ||
| 16 | + | ||
| 17 | + <LinearLayout | ||
| 18 | + android:layout_width="0dp" | ||
| 19 | + android:layout_height="match_parent" | ||
| 20 | + android:layout_marginLeft="10dp" | ||
| 21 | + android:layout_weight="1" | ||
| 22 | + android:gravity="center_vertical" | ||
| 23 | + android:orientation="vertical"> | ||
| 24 | + | ||
| 25 | + <LinearLayout | ||
| 26 | + android:layout_width="match_parent" | ||
| 27 | + android:layout_height="wrap_content" | ||
| 28 | + android:gravity="center_vertical"> | ||
| 29 | + | ||
| 30 | + <TextView | ||
| 31 | + android:id="@+id/tv_user_name" | ||
| 32 | + android:layout_width="wrap_content" | ||
| 33 | + android:layout_height="wrap_content" | ||
| 34 | + android:ellipsize="end" | ||
| 35 | + android:maxLength="6" | ||
| 36 | + android:text="用户名称" | ||
| 37 | + android:textColor="@color/color_282828" | ||
| 38 | + android:textSize="16sp" | ||
| 39 | + android:textStyle="bold" /> | ||
| 40 | + | ||
| 41 | + <TextView | ||
| 42 | + android:id="@+id/tv_user_role" | ||
| 43 | + android:layout_width="wrap_content" | ||
| 44 | + android:layout_height="wrap_content" | ||
| 45 | + android:layout_marginLeft="10dp" | ||
| 46 | + android:background="@drawable/shape_green_stroke" | ||
| 47 | + android:ellipsize="end" | ||
| 48 | + android:maxLength="6" | ||
| 49 | + android:paddingLeft="5dp" | ||
| 50 | + android:paddingRight="5dp" | ||
| 51 | + android:text="管理员" | ||
| 52 | + android:textColor="@color/btn_green" | ||
| 53 | + android:textSize="11sp" /> | ||
| 54 | + </LinearLayout> | ||
| 55 | + | ||
| 56 | + <TextView | ||
| 57 | + android:id="@+id/tv_user_phone" | ||
| 58 | + android:layout_width="wrap_content" | ||
| 59 | + android:layout_height="wrap_content" | ||
| 60 | + android:layout_marginTop="5dp" | ||
| 61 | + android:ellipsize="end" | ||
| 62 | + android:text="用户手机号" | ||
| 63 | + android:textColor="@color/color_999999" | ||
| 64 | + android:textSize="12sp" /> | ||
| 65 | + | ||
| 66 | + </LinearLayout> | ||
| 67 | + | ||
| 68 | + <TextView | ||
| 69 | + android:id="@+id/tv_flag" | ||
| 70 | + android:layout_width="wrap_content" | ||
| 71 | + android:layout_height="wrap_content" | ||
| 72 | + android:layout_marginRight="10dp" | ||
| 73 | + android:ellipsize="end" | ||
| 74 | + android:maxLength="6" | ||
| 75 | + android:text="我" | ||
| 76 | + android:textColor="@color/color_282828" | ||
| 77 | + android:textSize="17sp" /> | ||
| 78 | + </LinearLayout> | ||
| 79 | +</layout> | ||
| 0 | \ No newline at end of file | 80 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/item_list_user_member.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<layout xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| 3 | + | ||
| 4 | + <LinearLayout | ||
| 5 | + android:layout_width="match_parent" | ||
| 6 | + android:layout_height="wrap_content" | ||
| 7 | + android:orientation="vertical"> | ||
| 8 | + | ||
| 9 | + <LinearLayout | ||
| 10 | + android:layout_width="match_parent" | ||
| 11 | + android:layout_height="60dp" | ||
| 12 | + android:background="@color/white" | ||
| 13 | + android:gravity="center_vertical"> | ||
| 14 | + | ||
| 15 | + <ImageView | ||
| 16 | + android:id="@+id/iv_icon" | ||
| 17 | + android:layout_width="40dp" | ||
| 18 | + android:layout_height="40dp" | ||
| 19 | + android:layout_marginLeft="10dp" /> | ||
| 20 | + | ||
| 21 | + <LinearLayout | ||
| 22 | + android:layout_width="0dp" | ||
| 23 | + android:layout_height="match_parent" | ||
| 24 | + android:layout_marginLeft="10dp" | ||
| 25 | + android:layout_weight="1" | ||
| 26 | + android:gravity="center_vertical" | ||
| 27 | + android:orientation="vertical"> | ||
| 28 | + | ||
| 29 | + <LinearLayout | ||
| 30 | + android:layout_width="match_parent" | ||
| 31 | + android:layout_height="wrap_content" | ||
| 32 | + android:gravity="center_vertical"> | ||
| 33 | + | ||
| 34 | + <TextView | ||
| 35 | + android:id="@+id/tv_user_name" | ||
| 36 | + android:layout_width="wrap_content" | ||
| 37 | + android:layout_height="wrap_content" | ||
| 38 | + android:ellipsize="end" | ||
| 39 | + android:maxLength="6" | ||
| 40 | + android:text="用户名称" | ||
| 41 | + android:textColor="@color/color_282828" | ||
| 42 | + android:textSize="16sp" | ||
| 43 | + android:textStyle="bold" /> | ||
| 44 | + | ||
| 45 | + <TextView | ||
| 46 | + android:id="@+id/tv_user_role" | ||
| 47 | + android:layout_width="wrap_content" | ||
| 48 | + android:layout_height="wrap_content" | ||
| 49 | + android:layout_marginLeft="10dp" | ||
| 50 | + android:background="@drawable/shape_green_stroke" | ||
| 51 | + android:ellipsize="end" | ||
| 52 | + android:maxLength="6" | ||
| 53 | + android:paddingLeft="5dp" | ||
| 54 | + android:paddingRight="5dp" | ||
| 55 | + android:text="管理员" | ||
| 56 | + android:textColor="@color/btn_green" | ||
| 57 | + android:textSize="11sp" /> | ||
| 58 | + </LinearLayout> | ||
| 59 | + | ||
| 60 | + <TextView | ||
| 61 | + android:id="@+id/tv_user_phone" | ||
| 62 | + android:layout_width="wrap_content" | ||
| 63 | + android:layout_height="wrap_content" | ||
| 64 | + android:layout_marginTop="5dp" | ||
| 65 | + android:ellipsize="end" | ||
| 66 | + android:text="用户手机号" | ||
| 67 | + android:textColor="@color/color_999999" | ||
| 68 | + android:textSize="12sp" /> | ||
| 69 | + | ||
| 70 | + </LinearLayout> | ||
| 71 | + | ||
| 72 | + <FrameLayout | ||
| 73 | + android:layout_width="wrap_content" | ||
| 74 | + android:layout_height="match_parent"> | ||
| 75 | + | ||
| 76 | + <LinearLayout | ||
| 77 | + android:id="@+id/ll_menu" | ||
| 78 | + android:layout_width="wrap_content" | ||
| 79 | + android:layout_height="match_parent" | ||
| 80 | + android:gravity="center_vertical"> | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + <LinearLayout | ||
| 84 | + android:layout_width="wrap_content" | ||
| 85 | + android:layout_height="match_parent"> | ||
| 86 | + | ||
| 87 | + <LinearLayout | ||
| 88 | + android:id="@+id/ll_edit" | ||
| 89 | + android:layout_width="wrap_content" | ||
| 90 | + android:layout_height="match_parent" | ||
| 91 | + android:gravity="center_vertical"> | ||
| 92 | + | ||
| 93 | + <TextView | ||
| 94 | + android:layout_width="wrap_content" | ||
| 95 | + android:layout_height="wrap_content" | ||
| 96 | + android:layout_marginLeft="10dp" | ||
| 97 | + android:layout_marginRight="10dp" | ||
| 98 | + android:ellipsize="end" | ||
| 99 | + android:maxLength="6" | ||
| 100 | + android:text="编辑" | ||
| 101 | + android:textColor="@color/color_282828" | ||
| 102 | + android:textSize="15sp" /> | ||
| 103 | + </LinearLayout> | ||
| 104 | + | ||
| 105 | + <LinearLayout | ||
| 106 | + android:id="@+id/ll_delete" | ||
| 107 | + android:layout_width="wrap_content" | ||
| 108 | + android:layout_height="match_parent" | ||
| 109 | + android:gravity="center_vertical"> | ||
| 110 | + | ||
| 111 | + <TextView | ||
| 112 | + android:layout_width="wrap_content" | ||
| 113 | + android:layout_height="wrap_content" | ||
| 114 | + android:layout_marginLeft="10dp" | ||
| 115 | + android:layout_marginRight="10dp" | ||
| 116 | + android:ellipsize="end" | ||
| 117 | + android:maxLength="6" | ||
| 118 | + android:text="移除" | ||
| 119 | + android:textColor="@color/qmui_config_color_red" | ||
| 120 | + android:textSize="15sp" /> | ||
| 121 | + </LinearLayout> | ||
| 122 | + </LinearLayout> | ||
| 123 | + </LinearLayout> | ||
| 124 | + | ||
| 125 | + <TextView | ||
| 126 | + android:id="@+id/tv_flag" | ||
| 127 | + android:layout_width="wrap_content" | ||
| 128 | + android:layout_height="wrap_content" | ||
| 129 | + android:layout_gravity="center_vertical|right" | ||
| 130 | + android:layout_marginRight="10dp" | ||
| 131 | + android:ellipsize="end" | ||
| 132 | + android:maxLength="6" | ||
| 133 | + android:text="我" | ||
| 134 | + android:textColor="@color/color_282828" | ||
| 135 | + android:textSize="17sp" | ||
| 136 | + android:visibility="gone" /> | ||
| 137 | + </FrameLayout> | ||
| 138 | + </LinearLayout> | ||
| 139 | + | ||
| 140 | + <View | ||
| 141 | + android:id="@+id/view_line" | ||
| 142 | + android:layout_width="match_parent" | ||
| 143 | + android:layout_height="1dp" | ||
| 144 | + android:background="@color/line" /> | ||
| 145 | + </LinearLayout> | ||
| 146 | +</layout> | ||
| 0 | \ No newline at end of file | 147 | \ No newline at end of file |
module_xiaojiaSoundBox/src/main/res/layout/list_item_wifi1.xml
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | android:id="@+id/rl_root" | 6 | android:id="@+id/rl_root" |
| 7 | android:layout_width="match_parent" | 7 | android:layout_width="match_parent" |
| 8 | android:layout_height="60dp" | 8 | android:layout_height="60dp" |
| 9 | - android:background="@drawable/ripple_bg" | 9 | + android:background="@drawable/selectable_item_white" |
| 10 | android:clickable="true" | 10 | android:clickable="true" |
| 11 | android:focusable="true" | 11 | android:focusable="true" |
| 12 | android:minHeight="50dp" | 12 | android:minHeight="50dp" |
module_xiaojiaSoundBox/src/main/res/values/styles.xml
| @@ -13,7 +13,7 @@ | @@ -13,7 +13,7 @@ | ||
| 13 | <style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox"> | 13 | <style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox"> |
| 14 | <item name="android:button">@null</item> | 14 | <item name="android:button">@null</item> |
| 15 | <item name="android:maxHeight">21dp</item> | 15 | <item name="android:maxHeight">21dp</item> |
| 16 | - <item name="android:background">@drawable/selector_checkbox</item> | 16 | + <item name="android:background">@drawable/selector_checkbox_no_default</item> |
| 17 | </style> | 17 | </style> |
| 18 | <!-- switch--> | 18 | <!-- switch--> |
| 19 | <style name="SwitchButtonMD" tools:ignore="ResourceName"> | 19 | <style name="SwitchButtonMD" tools:ignore="ResourceName"> |