1.目录
1.1layout存放编写页面样式的xml文件
1.2drawable存放图片的文件
1.3mipmap存放图标文件
1.4value存放字符串和样式文件
1.5java存放编写功能的java文件
2.去除顶部导航栏
2.1编写样式
<style name="NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- 设置工具栏的颜色-->
<item name="colorControlNormal">@android:color/white</item>
</style>
2.2 在AndroidManifest文件中引入样式
< android:theme="@style/NoActionBar">
3 在AnddroidManifest中设置主页面
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
4线性布局
<?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:background="@drawable/bgimage"
android:orientation="vertical"
android:gravity="center_horizontal"
tools:context=".Forget_pwd_Activity">
<include layout="@layout/tool_bar"/>
<TextView
android:id="@+id/your_username"
android:layout_width="300sp"
android:layout_height="wrap_content"
android:text="你的用户名是:"
android:layout_marginBottom="8sp"
android:layout_marginTop="20sp"
android:textColor="#8a8a8a"
android:textSize="20sp"
android:visibility="gone"/>
<EditText
android:id="@+id/input_your_username"
android:layout_width="300sp"
android:layout_height="40sp"
android:hint="请输入你的用户名"
android:layout_gravity="center"
android:drawableLeft="@drawable/see_user_small"
android:drawablePadding="8dp"
android:background="@drawable/border_text"
android:paddingLeft="10sp"
android:maxLines="1"
android:visibility="gone"/>
<TextView
android:layout_width="300sp"
android:layout_height="wrap_content"
android:text="你的姓名是:"
android:layout_marginBottom="8sp"
android:layout_marginTop="20sp"
android:textColor="#8a8a8a"
android:textSize="20sp" />
<EditText
android:id="@+id/your_name"
android:layout_width="300sp"
android:layout_height="40sp"
android:layout_marginBottom="20sp"
android:hint="请输入你的姓名"
android:layout_gravity="center"
android:drawableLeft="@drawable/see_user_small"
android:drawablePadding="8dp"
android:background="@drawable/border_text"
android:paddingLeft="10sp"
android:maxLines="1" />
<Button
android:id="@+id/confirm_btn"
android:layout_width="300sp"
android:layout_height="40sp"
android:background="#f3ad02"
android:textSize="20sp"
android:layout_gravity="center"
android:textColor="@android:color/white"
android:layout_marginBottom="8sp"
android:text="保 存" />
</LinearLayout>
5保存和读取密码和用户名
保存
/**
* 保存用户信息
* @param username
* @param password
*/
private void savePref(String username, String password) {
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
// editor.putString("username",username);
// editor.putString("password",password);
// editor.putString("sex",sex);
editor.putString(username,password);
editor.apply();
}
读取
SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);
String pwd = sp.getString(username,"");
6页面之间的传值跳转和拿取数据
String username = etUsername.getText().toString();
Intent intent = new Intent();
intent.putExtra("username",username);
setResult(RESULT_OK,intent);
finish();
Intent intent = new Intent(LoginActivity.this,RegisterActivity.class);
startActivityForResult(intent,1);
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data!=null){
String username = data.getStringExtra("username");
lgUsername.setText(username);
// lgUsername.setSelection(username.length());
}
}
7底部导航栏和碎片
底部导航栏样式文件
<?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=".Main1Activity">
<include layout="@layout/tool_bar"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/fragment_main"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginTop="5sp"
android:background="#eaeaea"
android:id="@+id/radio_main"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/rb_home"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector_home_drawable"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="课程"
android:textSize="18sp"
android:textColor="@drawable/selector_text"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/rb_find"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector_find_drawable"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="习题"
android:textSize="18sp"
android:textColor="@drawable/selector_text"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/rb_web"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector_web_drawable"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="资讯"
android:textSize="18sp"
android:textColor="@drawable/selector_text"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/rb_my"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector_my_drawable"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="我的"
android:textSize="18sp"
android:checked="true"
android:textColor="@drawable/selector_text"/>
</RadioGroup>
</LinearLayout>
</LinearLayout>
碎片
package com.example;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.myapplication.LoginActivity;
import com.example.myapplication.R;
import com.example.myapplication.SettingActivity;
/**
* A simple {@link Fragment} subclass.
* Use the {@link MySettingFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class MySettingFragment extends Fragment {
private boolean isLogin;
private Context mContext;
private TextView tvUsername;
private LinearLayout headLayout,historyLayout,settingLayout;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
// private static final String ARG_PARAM1 = "param1";
// private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
// private String mParam1;
// private String mParam2;
public MySettingFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static MySettingFragment newInstance() {
MySettingFragment fragment = new MySettingFragment();
//给fragment传参的方法
// Bundle args = new Bundle();
// args.putString(ARG_PARAM1, param1);
// args.putString(ARG_PARAM2, param2);
// fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//接收fragment参数
// if (getArguments() != null) {
// mParam1 = getArguments().getString(ARG_PARAM1);
// mParam2 = getArguments().getString(ARG_PARAM2);
// }
}
//初始化Fragment的xml界面上所有控件和数据,相当于Acticity的onCreate()作用
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//1获取fragment的
this.mContext = getContext();
this.isLogin = checkLoginStatus();
View view = inflater.inflate(R.layout.fragment_my_setting, container, false);
headLayout = view.findViewById(R.id.ll_head);
tvUsername = view.findViewById(R.id.click_login);
setUsername(isLogin);
historyLayout = view.findViewById(R.id.list_history);
settingLayout = view.findViewById(R.id.list_setting);
//3设置事件监听
headLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isLogin){
}else {
Intent intent = new Intent(mContext, LoginActivity.class);
startActivityForResult(intent,1);
}
}
});
historyLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isLogin){
}else {
Toast.makeText(mContext,"请先登录",Toast.LENGTH_SHORT).show();
}
}
});
settingLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isLogin){
Intent intent = new Intent(mContext, SettingActivity.class);
startActivityForResult(intent,2);
}else {
Toast.makeText(mContext,"请先登录",Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
private void setUsername(boolean isLogin) {
if (isLogin){
tvUsername.setText(readLoginInfo());
} else {
tvUsername.setText("点击登录");
}
}
//获取登录状态
private boolean checkLoginStatus(){
SharedPreferences sp = mContext.getSharedPreferences("data",Context.MODE_PRIVATE);
return sp.getBoolean("isLogin",false);
}
private String readLoginInfo() {
SharedPreferences sp = mContext.getSharedPreferences("data",Context.MODE_PRIVATE);
return sp.getString("loginUser","");
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == Activity.RESULT_OK && data!=null) {
isLogin = data.getBooleanExtra("isLogin", false);
setUsername(isLogin);
} else if (requestCode == 2 && resultCode == Activity.RESULT_OK && data!=null){
isLogin =data.getBooleanExtra("isLogin",false);
setUsername(isLogin);
}
}
}
在drawable文件下建立选择器
image.png图标选择器(selector)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/my"/>
<item android:state_checked="true" android:drawable="@drawable/my_selected"/>
</selector>
文字选择器
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:color="#8a8a8a"/>
<item android:state_checked="true" android:color="#09bb07"/>
</selector>
网友评论