android博学谷我的代码,《Android项目实战-博学谷》我的模块

我的模块界面

思路

由于此界面只是主界面中的一部分,所以无需创建一个新的 Activity ,只需要在 layout 目录下新建一个布局即可,同理导入图片至 drawable 目录下

具体代码如下:

main_view_myinfo.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/white"

android:orientation="vertical">

android:id="@+id/ll_head"

android:layout_width="fill_parent"

android:layout_height="240dp"

android:background="@drawable/myinfo_login_bg"

android:orientation="vertical">

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" />

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" />

android:layout_width="fill_parent"

android:layout_height="1dp"

android:layout_marginTop="20dp"

android:background="#E3E3E3" />

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">

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" />

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" />

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" />

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3" />

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">

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" />

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" />

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" />

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3" />

Analysis工具类

思路

由于本项目在保存和获取数据时会多次用到用户名,因此创建一个工具类 AnalysisUtils 用于获取用户名,以便后续调用

具体代码如下:

AnalysisUtils

package cn.edu.lt.android.boxueguapp.utils;

import android.content.Context;

import android.content.SharedPreferences;

/**

* Created by lt on 2018/1/2.

*/

public class AnalysisUtils {

/**

* 从SharedPreferences中读取登录用户名

* @param context

* @return

*/

public static String readLoginUserName(Context context){

SharedPreferences sp=context.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);

String userName=sp.getString("loginUserName", "");

return userName;

}

}

我的模块逻辑

思路

在此界面中需要判断用户是否登录,若已登录则显示用户名,若未登录则显示“点击登录”,若用户已登录,当点击用户头像时跳转到个人资料界面,点击播放记录跳转到播放记录界面,点击设置时跳转到设置界面。首先需要新建一个包 view ,在其下新建一个类 MyInfoView ,

MyInfoView

package cn.edu.lt.android.boxueguapp.view;

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;

import cn.edu.lt.android.boxueguapp.R;

import cn.edu.lt.android.boxueguapp.activity.LoginActivity;

import cn.edu.lt.android.boxueguapp.utils.AnalysisUtils;

/**

* Created by lt on 2018/1/2.

*/

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()){

//跳转到设置界面

}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 传递登录成功的信息,覆写一个 onActivityResult 方法

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 和 LoginActivity

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;

运行效果

bV1kjW?w=498&h=928

Android项目实战博学谷是一个基于黑马程序员的博学谷自学助手项目进行开发和创新的APP。该APP主要讲述了WordPress建站过程,包括原型设计、各个模块开发和应用商店发布最终产品的过程。该项目共分为10个模块,包括项目综述、界面设计、注册与登录模块、"我"的模块、个人资料模块、习题模块、课程模块、创新模块(上)、创新模块(下)和项目上线。开发环境包括Windows 10 x64操作系统、JDK 1.8 Java环境、Eclipse Jee 2019 IDE环境、Android SDK Tools 24.1.2、Android 9.0编译和SQLite数据库。在该项目中,为了解决中文乱码问题,可以通过修改data.json文件的编码方式为UTF-8来解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Android项目实战系列—基于博学谷(一)项目综述](https://blog.csdn.net/weixin_42343931/article/details/105745049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Android项目实战系列—基于博学谷(七)课程模块(中)](https://blog.csdn.net/weixin_42343931/article/details/105943474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值