Android日记02
布局管理器
- LinearLayout 线性布局
- RelativeLayout 相对布局
LinearLayout
常用属性
android:id
android:layout_width 宽度设置
android:layout_height 高度设置
android:background 背景设置(颜色)
android:layout_margin 外边距设置
android:layout_padding
android:orientation 垂直或水平布局(vertical,horizontal)默认是水平
android:padding 内边距设置
android:gravity:内部元素布局方式
android:layout_weight:把剩余内容按照权重分配
RelativeLayout
常用属性
TextView
- 文字大小、颜色
- 显示不下使用…
- 文字+icon
- 删除线、下划线
- 跑马灯
显示不下使用…
布局xml文件
<?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:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/tv_2"
android:layout_width="80dp"
android:maxLines="1"
android:ellipsize="end"
android:layout_height="wrap_content"
android:text="@string/tv_test1"
android:textColor="#000"
android:textSize="26sp"/>
</LinearLayout>
文字+icon
<?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:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/tv_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:drawablePadding="10dp"
android:drawableLeft="@drawable/arrow_right"
android:text="@string/tv_test1"
android:textColor="#000"
android:textSize="26sp"/>
</LinearLayout>
删除线、下划线
<?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:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/tv_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_test1"
android:textColor="#000"
android:textSize="26sp"
android:layout_marginTop="10dp"/>
<TextView
android:id="@+id/tv_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_test1"
android:textColor="#000"
android:textSize="26sp"
android:layout_marginTop="10dp"/>
</LinearLayout>
结合Java代码
package com.eg.geoquiz;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class TextViewActivity extends AppCompatActivity {
private TextView mTv4;
private TextView mTv5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
mTv4 = findViewById(R.id.tv_4);
mTv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//删除线
mTv4.getPaint().setAntiAlias(true);//去除锯齿
mTv5 = findViewById(R.id.tv_5);
mTv5.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线
}
}
跑马灯
<?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:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/tv_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GeoQuizGeoQuizGeoQuizGeoQuizGeoQuizGeoQuizGeoQuiz"
android:textColor="#000"
android:textSize="26sp"
android:layout_marginTop="10dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"/>
</LinearLayout>
(我的模拟器跑不出来跑马灯的效果)
Button
- 文字大小
- 自定义背景形状
- 自定义按压效果
- 点击事件
文字大小
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="15dp">
<Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="按钮1"
android:textSize="20sp"
android:textColor="#FFF"
android:background="#F00"/>
</RelativeLayout>
自定义背景形状
新建一个Drawable Resource File
File name
Root element 改为shap
bg_btn2.xml
设置圆角
有背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#F90"/>
<corners
android:radius="10dp"/>
</shape>
activity_button.xml文件引用drawable文件
<Button
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="按钮2"
android:textSize="20sp"
android:textColor="#FFF"
android:background="@drawable/bg_btn2"
android:layout_below="@id/btn_1"
android:layout_marginTop="10dp"/>
设置边框按钮
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#F90"/>
<corners
android:radius="10dp"/>
</shape>
activity_button.xml文件引用drawable文件
<Button
android:id="@+id/btn_3"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="按钮3"
android:textSize="20sp"
android:textColor="#F90"
android:background="@drawable/bg_btn3"
android:layout_below="@id/btn_2"
android:layout_marginTop="10dp"/>
自定义按压效果
新建过程同5.2
bg_btn4.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#CC7A00"></solid>
<corners android:radius="5dp"></corners>
</shape>
</item>
<item android:state_pressed="false">
<shape>
<solid android:color="#F90"></solid>
<corners android:radius="5dp"></corners>
</shape>
</item>
</selector>
activity_button.xml文件引用drawable文件
并添加点击事件。
<Button
android:id="@+id/btn_4"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="按钮4"
android:textSize="20sp"
android:textColor="#FFF"
android:background="@drawable/bg_btn4"
android:layout_below="@id/btn_3"
android:onClick="showToast"
android:layout_marginTop="10dp"/>
点击事件Java代码
public class ButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
}
public void showToast(View view){
Toast.makeText(this, "btn4被点击了", Toast.LENGTH_SHORT).show();
}
}
点击事件的制作
步骤
- 在activity_xxx.xml文件中定义组件
- 在XXXActivity文件中
- 定义组件
- 绑定组件
- 为组件添加点击事件
activity_button.xml
<TextView
android:id="@+id/tv_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:text="文字1"
android:textSize="60sp"
android:layout_below="@id/btn_4"
android:layout_marginTop="60dp"
android:background="#F90"
android:gravity="center"/>
ButtonActivity.java
package com.eg.geoquiz;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class ButtonActivity extends AppCompatActivity {
//定义组件
private Button mBtn3;
private TextView mTv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
//绑定组件
mBtn3 = findViewById(R.id.btn_3);
//为组件添加点击事件
mBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ButtonActivity.this, "btn3被点击了", Toast.LENGTH_SHORT).show();
}
});
mTv1 = findViewById(R.id.tv_1);
mTv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ButtonActivity.this, "tv1被点击了", Toast.LENGTH_SHORT).show();
}
});
}
}