目录
约束布局
1.TextView用法
android:ellipsize="end" //内容不能完全显示时,在末尾以省略号显示
android:lines="3" //文本只能显示三行
Drawable:是“可以绘制的东西”的一般抽象。 大多数情况下,您将使用Drawable作为绘制事物到屏幕上的资源的类型; Drawable类提供了一个通用的API来处理可能采取各种形式的底层视觉资源。 与视图不同,Drawable没有任何接收事件或与用户交互的功能。
app——>res——>drawable——>new——>drawable resource file 命名为border_style
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:color="#f0f" android:width="2sp" ></stroke>
<corners android:radius="4sp"></corners>
</shape>
<?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:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="微 信"
android:textSize="20sp"
android:gravity="center"
android:drawableTop="@mipmap/wx1"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintTop_toTopOf="@+id/tv1"
android:text="电 话"
android:textSize="20sp"
android:gravity="center"
android:layout_marginLeft="20sp"
android:drawableTop="@mipmap/tx1">
</TextView>
<TextView
android:layout_width="150sp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="20sp"
android:lines="1"
android:ellipsize="end"
android:text="textviewlalalalalalala"
android:textSize="20sp"
android:textStyle="bold|italic"
android:background="@drawable/border_style">
</TextView>
</androidx.constraintlayout.widget.ConstraintLayout>
2.Button点击事件
①在Button指定onCLick事件
在MainActivity.java中添加方法。
首先添加两个包
import android.view.View;
import android.widget.Button;
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:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="微 信"
android:textSize="20sp"
android:gravity="center"
android:drawableTop="@mipmap/wx1"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintTop_toTopOf="@+id/tv1"
android:text="电 话"
android:textSize="20sp"
android:gravity="center"
android:layout_marginLeft="20sp"
android:drawableTop="@mipmap/tx1">
</TextView>
<TextView
android:id="@+id/tv3"
android:layout_width="150sp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="20sp"
android:lines="1"
android:ellipsize="end"
android:text="textviewlalalalalalala"
android:textSize="20sp"
android:layout_marginTop="50sp"
android:textStyle="bold|italic"
android:background="@drawable/border_style">
</TextView>
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tv3"
app:layout_constraintLeft_toLeftOf="@+id/tv3"
android:text="OK"
android:textSize="20sp"
android:onClick="onClick">
</Button>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/bt1"
app:layout_constraintLeft_toRightOf="@id/bt1"
android:text="NO"
android:textSize="20sp"
android:onClick="onClick">
</Button>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private Button bt1,bt2;
private int btnumber=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
}
public void onClick(View v) { //通过View确定哪一个控件
switch (v.getId()) {
case R.id.bt1:
//可以来回进行切换
if(bt1.getText().toString().equals("OK")) {
bt1.setText("OK id clicked.");
bt1.setTextSize(10); // 单位是sp
}
else {
bt1.setText("OK");
bt1.setTextSize(20); // 单位是sp
}
break;
case R.id.bt2:
if(bt2.getText().toString().equals("NO")) {
bt2.setText("NO id clicked.");
bt2.setTextSize(10); // 单位是sp
}
else {
bt2.setText("NO");
bt2.setTextSize(20); // 单位是sp
}
break;
}
}
}
②匿名类方法添加事件
匿名类方法需要多次构造匿名函数,比较麻烦。
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:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="微 信"
android:textSize="20sp"
android:gravity="center"
android:drawableTop="@mipmap/wx1"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintTop_toTopOf="@+id/tv1"
android:text="电 话"
android:textSize="20sp"
android:gravity="center"
android:layout_marginLeft="20sp"
android:drawableTop="@mipmap/tx1">
</TextView>
<TextView
android:id="@+id/tv3"
android:layout_width="150sp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="20sp"
android:lines="1"
android:ellipsize="end"
android:text="textviewlalalalalalala"
android:textSize="20sp"
android:layout_marginTop="50sp"
android:textStyle="bold|italic"
android:background="@drawable/border_style">
</TextView>
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tv3"
app:layout_constraintLeft_toLeftOf="@+id/tv3"
android:text="OK"
android:textSize="20sp"
android:onClick="onClick">
</Button>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/bt1"
app:layout_constraintLeft_toRightOf="@id/bt1"
android:text="NO"
android:textSize="20sp"
android:onClick="onClick">
</Button>
//下面两个控件没有点击事件
<Button
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/bt1"
app:layout_constraintLeft_toLeftOf="@+id/bt1"
android:text="YES"
android:textSize="20sp">
</Button>
<Button
android:id="@+id/bt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/bt3"
app:layout_constraintLeft_toRightOf="@id/bt3"
android:text="Ignore"
android:textSize="20sp">
</Button>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private Button bt1,bt2,bt3,bt4;
private int btnumber=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
bt3 = findViewById(R.id.bt3);
bt4 = findViewById(R.id.bt4);
//匿名类 不方便太麻烦了
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bt3.getText().toString().equals("YES")) {
bt3.setText("YES id clicked.");
bt3.setTextSize(10); // 单位是sp
}
else {
bt3.setText("YES");
bt3.setTextSize(20); // 单位是sp
}
}
});
bt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bt4.getText().toString().equals("Ignore")) {
bt4.setText("Ignore id clicked.");
bt4.setTextSize(10); // 单位是sp
}
else {
bt4.setText("Ignore");
bt4.setTextSize(20); // 单位是sp
}
}
});
}
public void onClick(View v) { //通过View确定哪一个控件
switch (v.getId()) {
case R.id.bt1:
//可以来回进行切换
if(bt1.getText().toString().equals("OK")) {
bt1.setText("OK id clicked.");
bt1.setTextSize(10); // 单位是sp
}
else {
bt1.setText("OK");
bt1.setTextSize(20); // 单位是sp
}
break;
case R.id.bt2:
if(bt2.getText().toString().equals("NO")) {
bt2.setText("NO id clicked.");
bt2.setTextSize(10); // 单位是sp
}
else {
bt2.setText("NO");
bt2.setTextSize(20); // 单位是sp
}
break;
}
}
}
③实现接口
制作动图一直不成功,头大... 早睡身体好,所以还是不做了,赶紧整理完
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button bt1,bt2,bt3,bt4;
private int btnumber=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
bt3 = findViewById(R.id.bt3);
bt4 = findViewById(R.id.bt4);
//匿名类 不方便太麻烦了
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bt3.getText().toString().equals("YES")) {
bt3.setText("YES id clicked.");
bt3.setTextSize(10); // 单位是sp
}
else {
bt3.setText("YES");
bt3.setTextSize(20); // 单位是sp
}
}
});
//bt3.setOnClickListener(new View.OnClickListener() {
// private int num =0;
// @Override
// public void onClick(View v) {
// bt3.setText("确定"+String.valueOf(num++));
// bt3.setTextSize(20);
// }
//});
bt4.setOnClickListener(this);
}
public void click(View v) { //通过View确定哪一个控件
switch (v.getId()) {
case R.id.bt1:
//可以来回进行切换
if(bt1.getText().toString().equals("OK")) {
bt1.setText("OK id clicked.");
bt1.setTextSize(10); // 单位是sp
}
else {
bt1.setText("OK");
bt1.setTextSize(20); // 单位是sp
}
break;
case R.id.bt2:
if(bt2.getText().toString().equals("NO")) {
bt2.setText("NO id clicked.");
bt2.setTextSize(10); // 单位是sp
}
else {
bt2.setText("NO");
bt2.setTextSize(20); // 单位是sp
}
break;
}
}
public void onClick(View v) {
if(bt4.getText().toString().equals("Ignore")) {
bt4.setText("Ignore id clicked.");
bt4.setTextSize(10); // 单位是sp
}
else {
bt4.setText("Ignore");
bt4.setTextSize(20); // 单位是sp
}
}
}
终于搞完了,最近时间规划太差了,执行力也不够高,反思反思...