约束布局
状态列表图形
- 状态列表图形是什么:根据不同的状态来采用不同的图形表示
常用状态:
- state pressed
- state checked
- state focused
- seIected
如何使用
- 创建drawable resource file
- 设置不同状态下的图片
- 使用
讲解形状图形
- 什么是形状图形:描述形状定义的图形(shape图形)
如何使用
- 创建xml文件
- 定义节点并初始化
- 调用
常用属性
- shape:根结点,描述样子,取值:rectangle(矩形)、 oval(椭圆)、line(线)、 ring (圆环)
- corners:圆角
- solid:形状的填充颜色,color颜色
- stroke:外表线,color、width等
效果图:
四大组件之Activity组件
- Activity组件:页面
讲解生命周期:
- onCreate
- onStart
- onResume
- onPause
- onStop
- onDestroy
- onRestart
代码部分:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="140dp"
android:layout_height="120dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline3"
app:srcCompat="@drawable/logo" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.08" />
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="40dp"
android:background="@drawable/input_shape"
android:ems="10"
android:hint="请输入手机号"
android:inputType="phone"
android:paddingLeft="10dp"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintStart_toStartOf="@+id/guideline5"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.1" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.9" />
<EditText
android:id="@+id/editText2"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="30dp"
android:background="@drawable/input_shape"
android:ems="10"
android:hint="请输入密码"
android:inputType="textPassword"
android:paddingLeft="10dp"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintStart_toStartOf="@+id/guideline5"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<Button
android:id="@+id/button6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:background="@drawable/button_shape"
android:text="登 录"
android:textColor="#FFFFFF"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintStart_toStartOf="@+id/guideline5"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
<TextView
android:id="@+id/registerButton"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginTop="30dp"
android:text="注册账户"
android:textColor="#30DC37"
android:textSize="18sp"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintStart_toStartOf="@+id/guideline5"
app:layout_constraintTop_toBottomOf="@+id/button6" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果图:
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
/*
服务的生命周期:
onCreate:当创建时,若页面没有被销毁,那么onCreate方法只调用一次
onStart:启动时,能够看得到,但是不能与之交互
onResume:既可以看得到,也可以进行交互
onPause:暂停,能够看得见,不能交互
onStop:停止,看不到,也不能交互
onDestroy:销毁
onRestart:重启
*/
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "页面:onCreate...");
// findViewById(R.id.registerButton).setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// Toast.makeText(MainActivity.this, "注册账号被点击了", Toast.LENGTH_SHORT).show();
// }
//
// });
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "页面:onStart...");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "页面:onResume...");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "页面:onPause...");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "页面:onStop...");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "页面:onDestroy...");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "页面:onRestart...");
}
}
效果图:
打开界面,进Home或进Overview,效果如下: