Android项目实战——"我"的模块(eclipse)

一、我的模块UI设计

①layout下新建main_view_myinfo.xml,相应图片导入drawable下即可。

<?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="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical">
 
    <LinearLayout
        android:id="@+id/ll_head"
        android:layout_width="fill_parent"
        android:layout_height="240dp"
        android:background="@drawable/myinfo_login_bg"
        android:orientation="vertical">
 
        <ImageView
            android:id="@+id/iv_head_icon"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="75dp"
            android:src="@drawable/default_icon" />
 
        <TextView
            android:id="@+id/tv_user_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:text="点击登录"
            android:textColor="@android:color/white"
            android:textSize="16sp" />
    </LinearLayout>
 
    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_marginTop="20dp"
        android:background="#E3E3E3" /><!--分割线效果-->
 
    <RelativeLayout
        android:id="@+id/rl_course_history"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="#F7F8F8"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
        android:paddingRight="10dp">
 
        <ImageView
            android:id="@+id/iv_course_historyicon"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="25dp"
            android:src="@drawable/course_history_icon" />
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="25dp"
            android:layout_toRightOf="@id/iv_course_historyicon"
            android:text="播放记录"
            android:textColor="#A3A3A3"
            android:textSize="16sp" />
 
        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="25dp"
            android:src="@drawable/iv_right_arrow" />
    </RelativeLayout>
 
    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#E3E3E3" />
 
    <RelativeLayout
        android:id="@+id/rl_setting"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="#F7F8F8"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
        android:paddingRight="10dp">
 
        <ImageView
            android:id="@+id/iv_userinfo_icon"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="25dp"
            android:src="@drawable/myinfo_setting_icon" />
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="25dp"
            android:layout_toRightOf="@id/iv_userinfo_icon"
            android:text="设置"
            android:textColor="#A3A3A3"
            android:textSize="16sp" />
 
        <ImageView
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="25dp"
            android:src="@drawable/iv_right_arrow" />
    </RelativeLayout>
 
    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#E3E3E3" />
</LinearLayout>

二、创建用于获取用户名的Analysis工具类,以便调用。
①在utils包下创建AnalysisUtils类。

package com.example.e.boxuegu.utils;

import android.content.Context;
import android.content.SharedPreferences;

public class AnalysisUtils {
	
	public static String readLoginUserName(Context context) {
		SharedPreferences sp =context.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
		String userName =sp.getString("loginUserName", "");
		return userName;
		
	}

}

三、实现“我”的界面逻辑代码。
①创建新包view,并在其下创建一个MyInfoView类。

package view;
 
import com.example.e.boxuegu.R;
import com.example.e.boxuegu.activity.LoginActivity;
import com.example.e.boxuegu.activity.SettingActivity;
import com.example.e.boxuegu.utils.AnalysisUtils;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
 


 

 
public class MyInfoView {
    private Context mContext;
    private final LayoutInflater mInflater ;
    private View mCurrentView;
    private LinearLayout ll_head;
    private ImageView iv_head_icon;
    private RelativeLayout rl_course_history;
    private RelativeLayout rl_setting;
    private TextView tv_user_name;
 
    /**
     * 由于SharedPreferences是通过context读取的,所以从构造方法中传递一个context
     * @param mContext
     */
    public MyInfoView(Context mContext){
        this.mContext = mContext;
        mInflater = LayoutInflater.from(mContext);
    }
 
    /**
     * 获取当前在导航栏上方显示对应的View
     */
    public View getView(){
        if (mCurrentView == null) {
            createView();//调用initView()
        }
        return mCurrentView;
    }
 
    private void createView() {
        initView();
    }
 
    /**
     * 获取控件填充布局
     * inflater布局填充器
     */
    private void initView() {
        mCurrentView = mInflater.inflate(R.layout.main_view_myinfo, null);
        ll_head = (LinearLayout) mCurrentView.findViewById(R.id.ll_head);
        iv_head_icon = (ImageView) mCurrentView.findViewById(R.id.iv_head_icon);
 
        rl_course_history = (RelativeLayout) mCurrentView.findViewById(R.id.rl_course_history);
        rl_setting = (RelativeLayout) mCurrentView.findViewById(R.id.rl_setting);
        tv_user_name = (TextView) mCurrentView.findViewById(R.id.tv_user_name);
 
        //用户名需要根据不同的登录状态进行不同的展示
        setLoginParams(readLoginStatus());//拿到登录状态作为参数传递进去
 
        //处理控件交互
        ll_head.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断是否已经登录
                if(readLoginStatus()){
                    //已登录跳转到个人资料界面
 
                }else{
                    //未登录跳转到登录界面
                    Intent intent=new Intent(mContext,LoginActivity.class);
                    ((Activity)mContext).startActivityForResult(intent,1);
                }
            }
        });
 
        rl_course_history.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(readLoginStatus()){
                    //跳转到播放记录界面
 
                }else{
                    Toast.makeText(mContext, "您还未登录,请先登录", Toast.LENGTH_SHORT).show();
                }
            }
        });
 
        rl_setting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(readLoginStatus()){
                    //跳转到设置界面
                	Intent intent=new Intent(mContext,SettingActivity.class);
                    ((Activity)mContext).startActivityForResult(intent,1);
 
                }else{
                    Toast.makeText(mContext, "您还未登录,请先登录", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
 
    /**
     * 登录成功后设置我的界面
     */
    public void setLoginParams(boolean isLogin) {
        if(isLogin){
            tv_user_name.setText(AnalysisUtils.readLoginUserName(mContext));
        }else{
            tv_user_name.setText("点击登录");
        }
    }
 
    /**
     * 从SharedPreferences中读取登录状态
     * @return
     */
    private boolean readLoginStatus(){
        SharedPreferences sp=mContext.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
        boolean isLogin=sp.getBoolean("isLogin", false);
        return isLogin;
    }
 
    /**
     * 显示当前导航栏上方所对应的view界面
     */
    public void showView() {
        if (mCurrentView == null){
            createView();
        }
        mCurrentView.setVisibility(View.VISIBLE);
    }
}

四、修改MainActivity,新填写一个方法。

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null){
            //从设置界面或登录界面传递过来的登录状态
            boolean isLogin = data.getBooleanExtra("isLogin", false);
            if (isLogin){//登录成功时显示课程界面
                clearBottomImageState();
                selectDisplayView(0);
            }
            if (mMyInfoView != null) {//登录成功或退出登录时根据isLogin设置我的界面
                mMyInfoView.setLoginParams(isLogin);
            }
        }
    }

五、修改SplashActivity

Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
 
改为
 
Intent intent = new Intent(SplashActivity.this, MainActivity.class);

六、修改LoginActivity,删除注释行。

Intent data=new Intent();
data.putExtra("isLogin",true);
setResult(RESULT_OK,data);
LoginActivity.this.finish();
//startActivity(new Intent(LoginActivity.this, MainActivity.class));删除此行
return;

至此,我的界面实现完成,拿走记得点赞。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值