1.个人中心页面
2.资料编辑页面 3.新增自定义Dialog(仿ios)
@ -15,12 +15,13 @@
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:maxAspectRatio="2.4"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:resizeableActivity="true"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:ignore="UnusedAttribute"
|
||||
tools:replace="android:allowBackup">
|
||||
<activity android:name=".ui.info.InfoEditActivity"></activity>
|
||||
|
||||
<meta-data
|
||||
android:name="android.max_aspect"
|
||||
|
@ -3,4 +3,7 @@ package com.yuxihan.sdu.comm;
|
||||
public class Const {
|
||||
public static final String LOGIN_STATE = "LoginState";
|
||||
public static final String LOGIN_TOKEN = "LoginToken";
|
||||
public static final String LOGIN_USER_NAME = "LoginUserName";
|
||||
public static final String LOGIN_NICKNAME = "LoginNickname";
|
||||
public static final String LOGIN_HEAD_URL = "LoginHeadUrl";
|
||||
}
|
||||
|
@ -0,0 +1,57 @@
|
||||
package com.yuxihan.sdu.comm.util;
|
||||
|
||||
import com.blankj.utilcode.util.SPUtils;
|
||||
import com.yuxihan.sdu.comm.Const;
|
||||
|
||||
/**
|
||||
* 账号管理相关类
|
||||
*/
|
||||
public class AccountUtils {
|
||||
|
||||
/**
|
||||
* 保存登陆状态
|
||||
*/
|
||||
public static void saveLoginState(String userName, String token, String nickName,
|
||||
String headUrl) {
|
||||
SPUtils.getInstance().put(Const.LOGIN_STATE, true);
|
||||
SPUtils.getInstance().put(Const.LOGIN_TOKEN, token);
|
||||
SPUtils.getInstance().put(Const.LOGIN_USER_NAME, userName);
|
||||
SPUtils.getInstance().put(Const.LOGIN_NICKNAME, nickName);
|
||||
SPUtils.getInstance().put(Const.LOGIN_HEAD_URL, headUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除登陆状态
|
||||
*/
|
||||
public static void clearLoginState() {
|
||||
SPUtils.getInstance().put(Const.LOGIN_STATE, false);
|
||||
SPUtils.getInstance().put(Const.LOGIN_TOKEN, "");
|
||||
SPUtils.getInstance().put(Const.LOGIN_USER_NAME, "");
|
||||
SPUtils.getInstance().put(Const.LOGIN_NICKNAME, "");
|
||||
}
|
||||
|
||||
public static String getCurUserName() {
|
||||
String ret = SPUtils.getInstance().getString(Const.LOGIN_USER_NAME);
|
||||
return DataUtil.isEmpty(ret) ? "" : ret;
|
||||
}
|
||||
|
||||
public static String getCurNickname() {
|
||||
String ret = SPUtils.getInstance().getString(Const.LOGIN_NICKNAME);
|
||||
return DataUtil.isEmpty(ret) ? "" : ret;
|
||||
}
|
||||
public static String getCurHeadUrl() {
|
||||
String ret = SPUtils.getInstance().getString(Const.LOGIN_HEAD_URL);
|
||||
return DataUtil.isEmpty(ret) ? "" : ret;
|
||||
}
|
||||
|
||||
public static String getCurToken() {
|
||||
String ret = SPUtils.getInstance().getString(Const.LOGIN_TOKEN);
|
||||
return DataUtil.isEmpty(ret) ? "" : ret;
|
||||
}
|
||||
|
||||
public static boolean isLoggedIn() {
|
||||
return SPUtils.getInstance().getBoolean(Const.LOGIN_STATE);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -7,13 +7,13 @@ public class DataUtil {
|
||||
* 字符串判空
|
||||
*/
|
||||
public static boolean isEmpty(String src) {
|
||||
return null != src && src.length() > 0;
|
||||
return null == src || src.length() == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* List判空
|
||||
*/
|
||||
public static boolean isEmpty(List src) {
|
||||
return null != src && src.size() > 0;
|
||||
return null == src || src.size() == 0;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,483 @@
|
||||
package com.yuxihan.sdu.comm.widget;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.Display;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.LinearLayout.LayoutParams;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.yuxihan.sdu.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ActionSheetDialog {
|
||||
/**
|
||||
* ActionSheetDialog Type
|
||||
*/
|
||||
public static final int DEFAULT_MODE_TYPE = 1;
|
||||
public static final int MULT_SELECT_MODE_TYPE = 2;
|
||||
public static final int SINGLE_SELECT_MODE_TYPE = 3;
|
||||
|
||||
private Context context;
|
||||
private Dialog dialog;
|
||||
private TextView txt_title;
|
||||
private TextView txt_cancel;
|
||||
private LinearLayout lLayout_content;
|
||||
private ScrollView sLayout_content;
|
||||
private boolean showTitle = false;
|
||||
private List<SheetItem> sheetItemList;
|
||||
private Display display;
|
||||
private int ModeType;
|
||||
|
||||
public ActionSheetDialog(Context context) {
|
||||
this.context = context;
|
||||
WindowManager windowManager = (WindowManager) context
|
||||
.getSystemService(Context.WINDOW_SERVICE);
|
||||
display = windowManager.getDefaultDisplay();
|
||||
}
|
||||
|
||||
public ActionSheetDialog builder() {
|
||||
|
||||
View view = LayoutInflater.from(context).inflate(
|
||||
R.layout.view_actionsheet, null);
|
||||
|
||||
view.setMinimumWidth(display.getWidth());
|
||||
|
||||
sLayout_content = (ScrollView) view.findViewById(R.id.sLayout_content);
|
||||
lLayout_content = (LinearLayout) view
|
||||
.findViewById(R.id.lLayout_content);
|
||||
txt_title = (TextView) view.findViewById(R.id.txt_title);
|
||||
txt_cancel = (TextView) view.findViewById(R.id.txt_cancel);
|
||||
txt_cancel.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
dialog = new Dialog(context, R.style.ActionSheetDialogStyle);
|
||||
dialog.setContentView(view);
|
||||
Window dialogWindow = dialog.getWindow();
|
||||
dialogWindow.setGravity(Gravity.LEFT | Gravity.BOTTOM);
|
||||
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
|
||||
lp.x = 0;
|
||||
lp.y = 0;
|
||||
dialogWindow.setAttributes(lp);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionSheetDialog setTitle(String title) {
|
||||
showTitle = true;
|
||||
txt_title.setVisibility(View.VISIBLE);
|
||||
txt_title.setText(title);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionSheetDialog setCancelable(boolean cancel) {
|
||||
dialog.setCancelable(cancel);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionSheetDialog setCanceledOnTouchOutside(boolean cancel) {
|
||||
dialog.setCanceledOnTouchOutside(cancel);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param strItem
|
||||
* @param color
|
||||
* @param listener
|
||||
* @return
|
||||
*/
|
||||
public ActionSheetDialog addSheetItem(String strItem, SheetItemColor color,
|
||||
OnSheetItemClickListener listener) {
|
||||
if (sheetItemList == null) {
|
||||
sheetItemList = new ArrayList<SheetItem>();
|
||||
}
|
||||
this.ModeType = DEFAULT_MODE_TYPE;
|
||||
sheetItemList.add(new SheetItem(strItem, color, listener));
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionSheetDialog addSheetItem(String strItem, SheetItemColor color,
|
||||
OnSheetFirstIconClickListener firstListener,
|
||||
OnSheetSecondIconClickListener secondListener,
|
||||
int modeType) {
|
||||
|
||||
if (sheetItemList == null) {
|
||||
sheetItemList = new ArrayList<SheetItem>();
|
||||
}
|
||||
this.ModeType = modeType;
|
||||
sheetItemList.add(new SheetItem(strItem, color, firstListener,
|
||||
secondListener));
|
||||
return this;
|
||||
}
|
||||
|
||||
public ActionSheetDialog addSheetItem(String strItem, SheetItemColor color,
|
||||
OnSheetItemClickListener listener, int modeType,
|
||||
int drawableId) {
|
||||
|
||||
if (sheetItemList == null) {
|
||||
sheetItemList = new ArrayList<SheetItem>();
|
||||
}
|
||||
this.ModeType = modeType;
|
||||
sheetItemList.add(new SheetItem(strItem, color, listener, drawableId));
|
||||
return this;
|
||||
}
|
||||
|
||||
private void setSheetItemsSingleMode() {
|
||||
|
||||
if (sheetItemList == null || sheetItemList.size() <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int size = sheetItemList.size();
|
||||
|
||||
if (size >= 7) {
|
||||
LayoutParams params = (LayoutParams) sLayout_content
|
||||
.getLayoutParams();
|
||||
params.height = display.getHeight() / 2;
|
||||
sLayout_content.setLayoutParams(params);
|
||||
}
|
||||
|
||||
for (int i = 1; i <= size; i++) {
|
||||
final int index = i;
|
||||
SheetItem sheetItem = sheetItemList.get(i - 1);
|
||||
final String strItem = sheetItem.name;
|
||||
SheetItemColor color = sheetItem.color;
|
||||
int drawableId = sheetItem.drawableId;
|
||||
final OnSheetItemClickListener listener =
|
||||
(OnSheetItemClickListener) sheetItem.itemClickListener;
|
||||
|
||||
LinearLayout itemView = (LinearLayout) LayoutInflater.from(context)
|
||||
.inflate(R.layout.item_cardphone, null);
|
||||
((TextView) itemView.findViewById(R.id.txtPhoneNumber))
|
||||
.setText(strItem);
|
||||
itemView.setGravity(Gravity.CENTER);
|
||||
|
||||
itemView.findViewById(R.id.imgCallMessage).setVisibility(View.GONE);
|
||||
itemView.findViewById(R.id.imgCallPhone).setBackgroundResource(
|
||||
drawableId);
|
||||
|
||||
if (size == 1) {
|
||||
if (showTitle) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
} else {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_single_selector);
|
||||
}
|
||||
} else {
|
||||
if (showTitle) {
|
||||
if (i >= 1 && i < size) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_middle_selector);
|
||||
} else {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
}
|
||||
} else {
|
||||
if (i == 1) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_top_selector);
|
||||
} else if (i < size) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_middle_selector);
|
||||
} else {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (color == null) {
|
||||
((TextView) itemView.findViewById(R.id.txtPhoneNumber))
|
||||
.setTextColor(Color.parseColor(SheetItemColor.Blue
|
||||
.getName()));
|
||||
} else {
|
||||
((TextView) itemView.findViewById(R.id.txtPhoneNumber))
|
||||
.setTextColor(Color.parseColor(color.getName()));
|
||||
}
|
||||
|
||||
// float scale = context.getResources().getDisplayMetrics().density;
|
||||
// int height = (int) (45 * scale + 0.5f);
|
||||
// itemView.setLayoutParams(new LinearLayout.LayoutParams(
|
||||
// LayoutParams.MATCH_PARENT, height));
|
||||
|
||||
itemView.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method stub
|
||||
listener.onClick(index);
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
lLayout_content.addView(itemView);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSheetItemsMultMode() {
|
||||
|
||||
if (sheetItemList == null || sheetItemList.size() <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int size = sheetItemList.size();
|
||||
|
||||
if (size >= 7) {
|
||||
LayoutParams params = (LayoutParams) sLayout_content
|
||||
.getLayoutParams();
|
||||
params.height = display.getHeight() / 2;
|
||||
sLayout_content.setLayoutParams(params);
|
||||
}
|
||||
|
||||
for (int i = 1; i <= size; i++) {
|
||||
final int index = i;
|
||||
SheetItem sheetItem = sheetItemList.get(i - 1);
|
||||
final String strItem = sheetItem.name;
|
||||
SheetItemColor color = sheetItem.color;
|
||||
final OnSheetFirstIconClickListener listener1 =
|
||||
(OnSheetFirstIconClickListener) sheetItem.itemFirstClickListener;
|
||||
final OnSheetSecondIconClickListener listener2 =
|
||||
(OnSheetSecondIconClickListener) sheetItem.itemSecondClickListener;
|
||||
|
||||
LinearLayout itemView = (LinearLayout) LayoutInflater.from(context)
|
||||
.inflate(R.layout.item_cardphone, null);
|
||||
((TextView) itemView.findViewById(R.id.txtPhoneNumber))
|
||||
.setText(strItem);
|
||||
itemView.setGravity(Gravity.CENTER);
|
||||
|
||||
if (listener1 != null) {
|
||||
itemView.findViewById(R.id.imgCallMessage).setVisibility(
|
||||
View.VISIBLE);
|
||||
} else {
|
||||
itemView.findViewById(R.id.imgCallMessage).setVisibility(
|
||||
View.GONE);
|
||||
}
|
||||
|
||||
if (size == 1) {
|
||||
if (showTitle) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
} else {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_single_selector);
|
||||
}
|
||||
} else {
|
||||
if (showTitle) {
|
||||
if (i >= 1 && i < size) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_middle_selector);
|
||||
} else {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
}
|
||||
} else {
|
||||
if (i == 1) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_top_selector);
|
||||
} else if (i < size) {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_middle_selector);
|
||||
} else {
|
||||
itemView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// float scale = context.getResources().getDisplayMetrics().density;
|
||||
// int height = (int) (45 * scale + 0.5f);
|
||||
// itemView.setLayoutParams(new LinearLayout.LayoutParams(
|
||||
// LayoutParams.MATCH_PARENT, height));
|
||||
|
||||
((ImageView) itemView.findViewById(R.id.imgCallPhone))
|
||||
.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method stub
|
||||
if (listener2 != null) {
|
||||
listener2.onClick(strItem);
|
||||
dialog.dismiss();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
((ImageView) itemView.findViewById(R.id.imgCallMessage))
|
||||
.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO Auto-generated method stub
|
||||
if (listener1 != null) {
|
||||
listener1.onClick(strItem);
|
||||
dialog.dismiss();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
lLayout_content.addView(itemView);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSheetItems() {
|
||||
if (sheetItemList == null || sheetItemList.size() <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int size = sheetItemList.size();
|
||||
|
||||
if (size >= 7) {
|
||||
LayoutParams params = (LayoutParams) sLayout_content
|
||||
.getLayoutParams();
|
||||
params.height = display.getHeight() / 2;
|
||||
sLayout_content.setLayoutParams(params);
|
||||
}
|
||||
|
||||
for (int i = 1; i <= size; i++) {
|
||||
final int index = i;
|
||||
SheetItem sheetItem = sheetItemList.get(i - 1);
|
||||
String strItem = sheetItem.name;
|
||||
SheetItemColor color = sheetItem.color;
|
||||
final OnSheetItemClickListener listener =
|
||||
(OnSheetItemClickListener) sheetItem.itemClickListener;
|
||||
|
||||
TextView textView = new TextView(context);
|
||||
textView.setText(strItem);
|
||||
textView.setTextSize(18);
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
|
||||
if (size == 1) {
|
||||
if (showTitle) {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
} else {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_single_selector);
|
||||
}
|
||||
} else {
|
||||
if (showTitle) {
|
||||
if (i >= 1 && i < size) {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_middle_selector);
|
||||
} else {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
}
|
||||
} else {
|
||||
if (i == 1) {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_top_selector);
|
||||
} else if (i < size) {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_middle_selector);
|
||||
} else {
|
||||
textView.setBackgroundResource(R.drawable.actionsheet_bottom_selector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (color == null) {
|
||||
textView.setTextColor(Color.parseColor(SheetItemColor.Blue
|
||||
.getName()));
|
||||
} else {
|
||||
textView.setTextColor(Color.parseColor(color.getName()));
|
||||
}
|
||||
|
||||
float scale = context.getResources().getDisplayMetrics().density;
|
||||
int height = (int) (45 * scale + 0.5f);
|
||||
textView.setLayoutParams(new LayoutParams(
|
||||
LayoutParams.MATCH_PARENT, height));
|
||||
|
||||
textView.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onClick(index);
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
lLayout_content.addView(textView);
|
||||
}
|
||||
}
|
||||
|
||||
public void show() {
|
||||
switch (ModeType) {
|
||||
case DEFAULT_MODE_TYPE:
|
||||
setSheetItems();
|
||||
break;
|
||||
case MULT_SELECT_MODE_TYPE:
|
||||
|
||||
setSheetItemsMultMode();
|
||||
break;
|
||||
case SINGLE_SELECT_MODE_TYPE:
|
||||
|
||||
setSheetItemsSingleMode();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
public interface OnSheetItemClickListener {
|
||||
void onClick(int which);
|
||||
}
|
||||
|
||||
public interface OnSheetFirstIconClickListener {
|
||||
void onClick(String value);
|
||||
}
|
||||
|
||||
public interface OnSheetSecondIconClickListener {
|
||||
void onClick(String value);
|
||||
}
|
||||
|
||||
public class SheetItem {
|
||||
String name;
|
||||
OnSheetItemClickListener itemClickListener;
|
||||
OnSheetFirstIconClickListener itemFirstClickListener;
|
||||
OnSheetSecondIconClickListener itemSecondClickListener;
|
||||
SheetItemColor color;
|
||||
int drawableId;
|
||||
|
||||
public SheetItem(String name, SheetItemColor color,
|
||||
OnSheetItemClickListener itemClickListener) {
|
||||
this.name = name;
|
||||
this.color = color;
|
||||
this.itemClickListener = itemClickListener;
|
||||
}
|
||||
|
||||
public SheetItem(String name, SheetItemColor color,
|
||||
OnSheetItemClickListener itemClickListener, int drawableId) {
|
||||
|
||||
this.name = name;
|
||||
this.color = color;
|
||||
this.drawableId = drawableId;
|
||||
this.itemClickListener = itemClickListener;
|
||||
}
|
||||
|
||||
public SheetItem(String name, SheetItemColor color,
|
||||
OnSheetFirstIconClickListener itemFirstClickListener,
|
||||
OnSheetSecondIconClickListener itemSecondClickListener) {
|
||||
|
||||
this.name = name;
|
||||
this.color = color;
|
||||
this.itemFirstClickListener = itemFirstClickListener;
|
||||
this.itemSecondClickListener = itemSecondClickListener;
|
||||
}
|
||||
}
|
||||
|
||||
public enum SheetItemColor {
|
||||
Blue("#037BFF"), Red("#FD4A2E");
|
||||
|
||||
private String name;
|
||||
|
||||
private SheetItemColor(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
}
|
@ -13,13 +13,17 @@ import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.blankj.utilcode.util.SPUtils;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.yuxihan.sdu.R;
|
||||
import com.yuxihan.sdu.comm.BaseFragment;
|
||||
import com.yuxihan.sdu.comm.Const;
|
||||
import com.yuxihan.sdu.comm.util.AccountUtils;
|
||||
import com.yuxihan.sdu.comm.util.DataUtil;
|
||||
import com.yuxihan.sdu.ui.info.InfoEditActivity;
|
||||
import com.yuxihan.sdu.ui.login.LoginActivity;
|
||||
|
||||
public class AccountFragment extends BaseFragment {
|
||||
import de.hdodenhof.circleimageview.CircleImageView;
|
||||
|
||||
public class AccountFragment extends BaseFragment implements View.OnClickListener {
|
||||
|
||||
private AccountViewModel accountViewModel;
|
||||
|
||||
@ -28,7 +32,22 @@ public class AccountFragment extends BaseFragment {
|
||||
accountViewModel =
|
||||
new ViewModelProvider(this).get(AccountViewModel.class);
|
||||
View root = inflater.inflate(R.layout.fragment_account, container, false);
|
||||
initView(root);
|
||||
return root;
|
||||
}
|
||||
|
||||
private void initView(View root) {
|
||||
final TextView textView = root.findViewById(R.id.text_notifications);
|
||||
root.findViewById(R.id.text_sign_out).setOnClickListener(this);
|
||||
root.findViewById(R.id.rl_personal_info).setOnClickListener(this);
|
||||
TextView tvNickName = root.findViewById(R.id.tv_nick_name);
|
||||
tvNickName.setText(AccountUtils.getCurNickname());
|
||||
TextView tvUserName = root.findViewById(R.id.tv_user_name);
|
||||
tvUserName.setText(getString(R.string.account_show, AccountUtils.getCurUserName()));
|
||||
CircleImageView civHead = root.findViewById(R.id.civ_head);
|
||||
if (!DataUtil.isEmpty(AccountUtils.getCurHeadUrl())) {
|
||||
Glide.with(this).load(AccountUtils.getCurHeadUrl()).into(civHead);
|
||||
}
|
||||
accountViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable String s) {
|
||||
@ -36,19 +55,25 @@ public class AccountFragment extends BaseFragment {
|
||||
}
|
||||
});
|
||||
|
||||
textView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
SPUtils.getInstance().put(Const.LOGIN_STATE, false);
|
||||
SPUtils.getInstance().put(Const.LOGIN_TOKEN, "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.text_sign_out:
|
||||
AccountUtils.clearLoginState();
|
||||
startActivity(new Intent(getContext(), LoginActivity.class));
|
||||
Activity activity = getActivity();
|
||||
if (null != activity) {
|
||||
activity.finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return root;
|
||||
break;
|
||||
case R.id.rl_personal_info:
|
||||
//打开资料编辑页面
|
||||
startActivity(new Intent(getContext(), InfoEditActivity.class));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ public class AccountViewModel extends ViewModel {
|
||||
|
||||
public AccountViewModel() {
|
||||
mText = new MutableLiveData<>();
|
||||
mText.setValue("注销");
|
||||
mText.setValue("This is notifications fragment");
|
||||
}
|
||||
|
||||
public LiveData<String> getText() {
|
||||
|
@ -0,0 +1,17 @@
|
||||
package com.yuxihan.sdu.ui.info;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.yuxihan.sdu.R;
|
||||
import com.yuxihan.sdu.comm.BaseActivity;
|
||||
|
||||
public class InfoEditActivity extends BaseActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_info_edit);
|
||||
}
|
||||
}
|
@ -6,8 +6,8 @@ import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import com.blankj.utilcode.util.SPUtils;
|
||||
import com.yuxihan.sdu.comm.SDUApp;
|
||||
import com.yuxihan.sdu.comm.util.AccountUtils;
|
||||
import com.yuxihan.sdu.comm.util.FormatUtils;
|
||||
import com.yuxihan.sdu.data.UpdateService;
|
||||
import com.yuxihan.sdu.data.model.DataBean;
|
||||
@ -46,11 +46,10 @@ public class LoginViewModel extends ViewModel {
|
||||
public void onResponse(Call<DataBean> call, Response<DataBean> response) {
|
||||
//请求成功,返回是一个封装为DataBean的响应
|
||||
Log.e("TAG", "接口返回内容 ===== " + response.body().getResult());
|
||||
if ("0" .equals(response.body().getErrCode())) {
|
||||
if ("0".equals(response.body().getErrCode())) {
|
||||
String token = response.body().getResult().getToken();
|
||||
loggedInUser.setValue(new LoggedInUser(username, username));
|
||||
SPUtils.getInstance().put("LoginState", true);
|
||||
SPUtils.getInstance().put("LoginToken", response.body().getResult().getToken());
|
||||
AccountUtils.saveLoginState(username, token, "雨曦大魔王", null);
|
||||
} else {
|
||||
loggedInUser.setValue(new LoggedInUser(username, "用户名/密码 错误!", false));
|
||||
}
|
||||
|
@ -3,11 +3,10 @@ package com.yuxihan.sdu.ui.splash;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.blankj.utilcode.util.SPUtils;
|
||||
import com.yuxihan.sdu.MainActivity;
|
||||
import com.yuxihan.sdu.R;
|
||||
import com.yuxihan.sdu.comm.BaseActivity;
|
||||
import com.yuxihan.sdu.comm.Const;
|
||||
import com.yuxihan.sdu.comm.util.AccountUtils;
|
||||
import com.yuxihan.sdu.ui.login.LoginActivity;
|
||||
|
||||
public class InitializeActivity extends BaseActivity {
|
||||
@ -16,7 +15,7 @@ public class InitializeActivity extends BaseActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_initialize);
|
||||
if (SPUtils.getInstance().getBoolean(Const.LOGIN_STATE)) {
|
||||
if (AccountUtils.isLoggedIn()) {
|
||||
startActivity(new Intent(this, MainActivity.class));
|
||||
} else {
|
||||
startActivity(new Intent(this, LoginActivity.class));
|
||||
|
5
app/src/main/res/anim/actionsheet_dialog_in.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<translate xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="200"
|
||||
android:fromYDelta="100%"
|
||||
android:toYDelta="0" />
|
5
app/src/main/res/anim/actionsheet_dialog_out.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<translate xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="200"
|
||||
android:fromYDelta="0"
|
||||
android:toYDelta="100%" />
|
BIN
app/src/main/res/drawable/action_contact.png
Normal file
After Width: | Height: | Size: 563 B |
BIN
app/src/main/res/drawable/action_message.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
app/src/main/res/drawable/actionsheet_bottom_normal.9.png
Normal file
After Width: | Height: | Size: 272 B |
BIN
app/src/main/res/drawable/actionsheet_bottom_pressed.9.png
Normal file
After Width: | Height: | Size: 275 B |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:drawable="@drawable/actionsheet_bottom_pressed" android:state_pressed="true"/>
|
||||
<item android:drawable="@drawable/actionsheet_bottom_normal"/>
|
||||
|
||||
</selector>
|
BIN
app/src/main/res/drawable/actionsheet_middle_normal.9.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
app/src/main/res/drawable/actionsheet_middle_pressed.9.png
Normal file
After Width: | Height: | Size: 187 B |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:drawable="@drawable/actionsheet_middle_pressed" android:state_pressed="true"/>
|
||||
<item android:drawable="@drawable/actionsheet_middle_normal"/>
|
||||
|
||||
</selector>
|
BIN
app/src/main/res/drawable/actionsheet_single_normal.9.png
Normal file
After Width: | Height: | Size: 318 B |
BIN
app/src/main/res/drawable/actionsheet_single_pressed.9.png
Normal file
After Width: | Height: | Size: 321 B |
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:drawable="@drawable/actionsheet_single_pressed" android:state_pressed="true"/>
|
||||
<item android:drawable="@drawable/actionsheet_single_normal"/>
|
||||
|
||||
</selector>
|
BIN
app/src/main/res/drawable/actionsheet_top_normal.9.png
Normal file
After Width: | Height: | Size: 276 B |
BIN
app/src/main/res/drawable/actionsheet_top_pressed.9.png
Normal file
After Width: | Height: | Size: 281 B |
7
app/src/main/res/drawable/actionsheet_top_selector.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:drawable="@drawable/actionsheet_top_pressed" android:state_pressed="true"/>
|
||||
<item android:drawable="@drawable/actionsheet_top_normal"/>
|
||||
|
||||
</selector>
|
9
app/src/main/res/drawable/ic_arrow_left.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:fillColor="#FF888888"
|
||||
android:pathData="M364.47,511.68l378.21,378.21c15.9,15.88 15.9,41.67 0,57.55 -15.88,15.9 -41.67,15.9 -57.55,0l-406.99,-406.99c-15.9,-15.88 -15.9,-41.67 0,-57.55l406.99,-406.99c7.94,-7.95 18.36,-11.92 28.77,-11.92s20.83,3.98 28.77,11.92c15.9,15.88 15.9,41.67 0,57.55l-378.21,378.21z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_arrow_right.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:fillColor="#FF888888"
|
||||
android:pathData="M273.88,9.48 L775.43,502.52 273.88,995.56 219.47,942.08 666.62,502.52 219.47,62.96 273.88,9.48Z"/>
|
||||
</vector>
|
12
app/src/main/res/drawable/ic_head_default.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:pathData="M514.56,509.44m-506.88,0a506.88,506.88 0,1 0,1013.76 0,506.88 506.88,0 1,0 -1013.76,0Z"
|
||||
android:fillColor="#BDDBF4"/>
|
||||
<path
|
||||
android:pathData="M830,812.8c-15.92,-82.28 -66.56,-153.96 -140.65,-204.39a26.88,26.88 0,0 0,-29.24 45.11c61.08,42.5 103.53,100.86 116.79,169.88a25.86,25.86 0,0 0,26.57 21.25h5.12a27.55,27.55 0,0 0,21.25 -31.85zM753.2,366.9a238.9,238.9 0,1 0,-477.75 0,231.63 231.63,0 0,0 121.86,207 321.18,321.18 0,0 0,-199.07 238.85,26.88 26.88,0 0,0 21.25,32.05h5.12a25.86,25.86 0,0 0,26.52 -21.25,269.52 269.52,0 0,1 260.1,-217.65h5.12a237.36,237.36 0,0 0,236.24 -238.9zM516.97,552.7h-8.14a185.8,185.8 0,1 1,191.08 -185.8c0,100.86 -82.28,183.14 -183.14,185.8zM516.97,552.7"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
</vector>
|
149
app/src/main/res/layout/activity_info_edit.xml
Normal file
@ -0,0 +1,149 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".ui.info.InfoEditActivity">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rl_account_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="75dp"
|
||||
android:background="@color/white_bg"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingTop="25dp"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:src="@drawable/ic_arrow_left" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:text="@string/info_edit"
|
||||
android:textColor="@color/text_black"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:padding="2dp"
|
||||
android:src="@drawable/ic_add"
|
||||
android:visibility="gone" />
|
||||
</RelativeLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="80dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:text="@string/head_icon"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<de.hdodenhof.circleimageview.CircleImageView
|
||||
android:id="@+id/civ_head"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="36dp"
|
||||
android:src="@drawable/ic_head_default" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:src="@drawable/ic_arrow_right" />
|
||||
</RelativeLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:text="@string/nick_name"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="38dp"
|
||||
android:textColor="@color/gray"
|
||||
android:textSize="16sp"
|
||||
tools:text="这里是昵称" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:src="@drawable/ic_arrow_right" />
|
||||
</RelativeLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:text="@string/account_id"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_user_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="38dp"
|
||||
android:textColor="@color/gray"
|
||||
android:textSize="16sp"
|
||||
tools:text="15006391924" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:src="@drawable/ic_arrow_right" />
|
||||
</RelativeLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
</LinearLayout>
|
@ -1,22 +1,121 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".ui.account.AccountFragment">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rl_account_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="75dp"
|
||||
android:background="@color/white_bg"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingTop="25dp"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:src="@drawable/ic_cam"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:text="@string/account_info"
|
||||
android:textColor="@color/text_black"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:padding="2dp"
|
||||
android:src="@drawable/ic_add"
|
||||
android:visibility="gone" />
|
||||
</RelativeLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rl_personal_info"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="125dp"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<de.hdodenhof.circleimageview.CircleImageView
|
||||
android:id="@+id/civ_head"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:src="@drawable/ic_head_default" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_nick_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_toEndOf="@+id/civ_head"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="22sp"
|
||||
tools:text="雨曦大魔王" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/tv_user_name"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignStart="@+id/tv_nick_name"
|
||||
android:layout_alignBottom="@+id/civ_head"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/text_hint"
|
||||
android:textSize="14sp"
|
||||
tools:text="账号:15006391924" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_notifications"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="50dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:textAlignment="center"
|
||||
android:gravity="center"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/place_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="250dp" />
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_sign_out"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:gravity="center"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@string/sign_out"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<include layout="@layout/view_divider" />
|
||||
|
||||
</LinearLayout>
|
39
app/src/main/res/layout/item_cardphone.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<RelativeLayout android:id="@+id/rl_itemCardPhone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:id="@+id/txtPhoneNumber"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"/>
|
||||
|
||||
<ImageView android:id="@+id/imgCallPhone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/action_contact"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginRight="10dp"/>
|
||||
|
||||
<ImageView android:id="@+id/imgCallMessage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/action_message"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toLeftOf="@id/imgCallPhone"
|
||||
android:layout_marginRight="30dp"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
49
app/src/main/res/layout/view_actionsheet.xml
Normal file
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/actionsheet_top_normal"
|
||||
android:gravity="center"
|
||||
android:minHeight="45dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="14sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/sLayout_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fadingEdge="none"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lLayout_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txt_cancel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="45dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:background="@drawable/actionsheet_single_selector"
|
||||
android:gravity="center"
|
||||
android:text="取消"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp" />
|
||||
|
||||
</LinearLayout>
|
5
app/src/main/res/layout/view_divider.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<View xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="10dp"
|
||||
android:background="@color/divider_gray" />
|
@ -18,4 +18,10 @@
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_dashboard">Dashboard</string>
|
||||
<string name="title_notifications">Notifications</string>
|
||||
<string name="sign_out">注销登录</string>
|
||||
<string name="account_show">账号:%1$s</string>
|
||||
<string name="info_edit">资料编辑</string>
|
||||
<string name="head_icon">头像</string>
|
||||
<string name="nick_name">昵称</string>
|
||||
<string name="account_id">账号</string>
|
||||
</resources>
|
||||
|
@ -10,11 +10,37 @@
|
||||
<item name="android:windowBackground">@android:color/white</item>
|
||||
</style>
|
||||
|
||||
<style name="DetailTheme" parent="Theme.AppCompat.Light.NoActionBar"/>
|
||||
<style name="DetailTheme" parent="Theme.AppCompat.Light.NoActionBar" />
|
||||
|
||||
<style name="SplashTheme" parent="AppTheme">
|
||||
<item name="android:windowBackground">@drawable/splash</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
|
||||
<!-- ActionSheet进出动画 -->
|
||||
<style name="ActionSheetDialogAnimation" parent="@android:style/Animation.Dialog">
|
||||
<item name="android:windowEnterAnimation">@anim/actionsheet_dialog_in</item>
|
||||
<item name="android:windowExitAnimation">@anim/actionsheet_dialog_out</item>
|
||||
</style>
|
||||
|
||||
<!-- 自定义仿IOS的ActionSheet底部Dialog的样式 ,有模糊效果 -->
|
||||
<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog">
|
||||
<!-- 背景透明 -->
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<!-- 浮于Activity之上 -->
|
||||
<item name="android:windowIsFloating">true</item>
|
||||
<!-- 边框 -->
|
||||
<item name="android:windowFrame">@null</item>
|
||||
<!-- Dialog以外的区域模糊效果 -->
|
||||
<item name="android:backgroundDimEnabled">true</item>
|
||||
<!-- 无标题 -->
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<!-- 半透明 -->
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<!-- Dialog进入及退出动画 -->
|
||||
<item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimation</item>
|
||||
|
||||
</style>
|
||||
</resources>
|
||||
|