Android 个人中心界面 及退出登陆
·
后来改良版:
想要源码 请到作者主页 看开源项目!!!
我又改进了第三版
涉及:
/**fresco 图片加载**/
implementation 'com.facebook.fresco:fresco:2.1.0'
/** TextView样式布局 **/
implementation 'com.github.lygttpod:SuperTextView:2.1.6'
第二版
布局如下:
<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:background="@color/bg_gray"
android:orientation="vertical"
tools:context="com.example.l.instructordome.PresonFragment">
<LinearLayout
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/images_head"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:scaleType="fitCenter"
app:srcCompat="@mipmap/t0"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:layout_weight="0.3"
android:orientation="horizontal">
<TextView
android:id="@+id/textView8"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="昵称:"
android:textSize="18sp"/>
<TextView
android:id="@+id/t_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="辅导员助手"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:orientation="horizontal">
<TextView
android:id="@+id/textView9"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="学号:"
android:textSize="18sp"/>
<TextView
android:id="@+id/t_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.44"
android:text="******"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/wrap_layout"
>
<!-- 上圆角-->
<LinearLayout style="@style/top_layout">
<TextView
style="@style/usertext"
android:text="个人资料"/>
<ImageView style="@style/img_arrow"/>
</LinearLayout>
<!-- 分割线 -->
<View
style="@style/bg_line"
android:layout_height="2px"/>
<!-- 无圆角-->
<LinearLayout style="@style/mid_layout">
<TextView
style="@style/usertext"
android:text="我的申请"/>
<ImageView style="@style/img_arrow"/>
</LinearLayout>
<!-- 分割线 -->
<View
style="@style/bg_line"
android:layout_height="2px"/> <!-- 分割线 -->
<!-- 无圆角-->
<LinearLayout style="@style/mid_layout">
<TextView
style="@style/usertext"
android:text="消息通知"/>
<ImageView style="@style/img_arrow"/>
</LinearLayout>
<!-- 分割线 -->
<!-- 无圆角-->
<View
style="@style/bg_line"
android:layout_height="2px"/>
<!-- 下圆角-->
<LinearLayout style="@style/bottom_layout">
<TextView
style="@style/usertext"
android:text="问题与反馈"/>
<ImageView style="@style/img_arrow"/>
</LinearLayout>
</LinearLayout>
<!-- 全圆角-->
<LinearLayout style="@style/wrap_layout">
<LinearLayout style="@style/single_layout">
<TextView
style="@style/usertext"
android:text="设置"/>
<ImageView style="@style/img_arrow"/>
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/btn_quit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/login_btn_login"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="10dp"
android:background="?attr/colorPrimary"
android:text="退出登陆"
android:textColor="@color/white"
android:textSize="18sp"/>
</LinearLayout>
style.xml
<!-- 上圆角样式 -->
<style name="top_layout" parent="base_layout">
<item name="android:background">@drawable/top_layout_selector</item>
</style>
<!--无圆角样式 -->
<style name="mid_layout" parent="base_layout">
<item name="android:background">@drawable/mid_layout_selector</item>
</style>
<!-- 下圆角样式 -->
<style name="bottom_layout" parent="base_layout">
<item name="android:background">@drawable/bottom_layout_selector</item>
</style>
<!-- 全圆角样式 -->
<style name="single_layout" parent="base_layout">
<item name="android:background">@drawable/single_layout_selector</item>
top_layout_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/top_select"></item>
<item android:state_focused="true" android:drawable="@drawable/top_select"></item>
<item android:drawable="@drawable/top_unselect"></item>
</selector>
top_select.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/sblue"/>
<corners android:topRightRadius="8dp" android:topLeftRadius="8dp"/>
</shape>
top_unselect.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/white"/>
<corners android:topRightRadius="8dp" android:topLeftRadius="8dp"/>
</shape>
其他圆角同理套路一下
目前刚刚写 只写了界面,和退出登陆
和获取当前用户
MyUser userInfo = BmobUser.getCurrentUser(MyUser.class);
String s_name=userInfo.getByname();
String s_number=userInfo.getUsername();
t_name.setText(s_name);
t_number.setText(s_number);
注意: 我们 实例对象上的 和bomb 云后端表 列名的大小写 ,还是用bmob 给的函数吧,不严报错
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_quit:
BmobUser.logOut();
startActivity(new Intent(getActivity(),LoginActivity.class));
break;
}
}
这里我来补充一下
如果你在activity里写线程了,退出登陆时,一定要记得销毁,否则报错。
如: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.aigsharedome.JavaBean.MyUser.
这里我动态更新Textview ,循环一直请求,所以出错。
注: 在fagment 碎片里 获取当前内容 用getActivity() 方法。以前 初学时,报错。
MyActivityManager 这种方式 适合sqlite 这种云数据库,就不适用了, 这一种 将activity 压栈,退出登陆时,将所有的activity 全部销毁。
public class MyActivityManager {
private static MyActivityManager instance;
private Stack<Activity> activityStack;//activity栈
private MyActivityManager() {
}
//单例模式
public static MyActivityManager getInstance() {
if (instance == null) {
instance = new MyActivityManager();
}
return instance;
}
//把一个activity压入栈中
public void pushOneActivity(Activity actvity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.add(actvity);
Log.d("MyActivityManager ", "size = " + activityStack.size());
}
//获取栈顶的activity,先进后出原则
public Activity getLastActivity() {
return activityStack.lastElement();
}
//移除一个activity
public void popOneActivity(Activity activity) {
if (activityStack != null && activityStack.size() > 0) {
if (activity != null) {
activity.finish();
activityStack.remove(activity);
activity = null;
}
}
}
//退出所有activity
public void finishAllActivity() {
if (activityStack != null) {
while (activityStack.size() > 0) {
Activity activity = getLastActivity();
if (activity == null) break;
popOneActivity(activity);
}
}
}
}
更多推荐
已为社区贡献3条内容
所有评论(0)