0
点赞
收藏
分享

微信扫一扫

第一行代码:Android(第二版)——第三章笔记(一)

晴儿成长记 2022-03-21 阅读 39

文章目录

参考书籍:第一行代码:Android(第二版)(郭霖):第三章

一、常用控件使用方法

1、初学暂时使用的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</LinearLayout>

2、TextView

TextView可以说是Android中最简单的一个控件,它主要用于在界面上显示一段文本信息,比如第一章中的HelloWorld,更多的使用方法如下

<!--
android:id:该组件的唯一标识符
android:layout_width:宽
android:layout_height:高
    三个值可选:match_parent(当前控件的大小和父布局一样)、fill_parent(意思同上)、wrap_content(当前控件的大小刚好包含住里面的内容)
android:text:指定在TextView中显示的文本内容(文字默认是居左上角对齐)
android:gravity:指定组件内文字的对齐方式,可选top\bottom\left\right\center等
    可以用"|"来同时指定多个值,center的效果等同于center_vertical|center_horizontal(竖直和水平都居中)
android:textSize:设置文字的大小(sp为单位)
android:textColor:设置文字颜色
android:textStyle:设置字体风格:italic(斜体),bold(加粗),normal(默认)
android:background:设置控件的背景颜色
android:shadowColor:设置阴影颜色,需要与shadowRadius一起使用
android:shadowDx:设置阴影再说水平方向的偏移,就是水平方向阴影开始的横坐标位置
android:shadowDy:设置阴影再说竖直方向的偏移,就是水平方向阴影开始的纵坐标位置
android:shadowRadius:设置阴影的模糊程序,设为0.1就变成字体颜色,建议使用3.0
跑马灯如下:
android:singleLine:内容单行显示
android:focusable:是否可以获取焦点
android:focusableInTouchMode:用于控制视图在触摸模式下是否可以聚焦
android:ellipsize:在哪里省略文本(marquee滚动、start省略号在前面、end省略号在后面、middle省略号在中间、none)
 android:marqueeRepeatLimit:字幕动画重复的次数marquee_forever无限次数
 以下代码实现跑马灯
-->
    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:gravity="center"
        android:text="HelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorld"
        android:background="#BBC8C3"
        android:textStyle="italic"
        android:textSize="24sp"
        android:textColor="#229000FF"
        android:shadowColor="@color/purple_700"
        android:shadowDx="15.0"
        android:shadowDy="15.0"
        android:shadowRadius="10.0"
        android:singleLine="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"/>

2、Button

Button是程序用于用户进行交互的一个重要控件

<!--以下内容写在布局<LinearLayout></LinearLayout>里面-->
<!--配置和TextView差不多
注意系统会对Button中的所有英文字母自动进行大写转换,可以使用
    android:textAllCaps="false"禁止这个特性
-->
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"
        android:textAllCaps="false"/>

3、EditText

是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理

<!--以下内容写在布局<LinearLayout></LinearLayout>里面-->
<!--
android:hint:指定了输入框中的提示性文本
android:maxLines:指定最大行数,当输入内容超过最大行数时,文本就会向上滚动
-->
    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="提示文本"
        android:maxLines="2"/>

4、小案例:EditText和Button结合使用

//MainActivity.java
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*
        * 通过点击按钮来获取EditText中输入的内容
        * */
        Button button=(Button) findViewById(R.id.button1);
        editText=(EditText) findViewById(R.id.edit_text);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (view.getId()){
                    case R.id.button1:
                        String inputText=editText.getText().toString();
                        //消息提示
                        Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();
                        break;
                    default:
                        break;
                }
            }
        });

    }
}

运行结果:

在这里插入图片描述

5、ImageView

ImageView是用于在界面上展示图片的一个控件,它可以让我们的程序界面变得更加丰富多彩,这个控件需要提前准备好一些图片,图片通常存放在以“drawable”开头的目录下,目前项目中有一个空的drawable目录,但是这个目录没有指定分辨率,所以一般不使用它来放置图片,这里在res目录下新建一个drawable-xhdpi目录,然后将准备好的两张图片img1.png和img2.png复制到该目录中。

<!--ImageView每个只能显示一张图片
android:src:图片存放的路径
   -->

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img1" />

6、ProgressBar

用于在界面上显示一个进度条,表明程序正在加载一些数据,运行之后会看到屏幕中有一个圆形的进度条正在旋转

<!--
 android:visibility:控制是否可见visible(可见),invisible(不可见),gone(不可见且不占用地方)
 style="@style/Widget.AppCompat.ProgressBar.Horizontal":设置水平进度条
android:max="100":进度条长度
  -->
    <ProgressBar
        android:id="@+id/progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible"
       style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:max="100"/>


<!--触动按钮时可以停止转动,部分Java代码-->
progressBar=(ProgressBar)findViewById(R.id.progress);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (view.getId()){
                    case R.id.button1:
                        String inputText=editText.getText().toString();
                        //消息提示
                        Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();
                       //通过按钮监控加载进度
//                        if(progressBar.getVisibility()==View.GONE){
//                            progressBar.setVisibility(View.VISIBLE);
//                        }else{
//                            progressBar.setVisibility(View.GONE);
//                        }
                        //动态修改水平进度条数据,每点击一次按钮进度条就加10
                        int projress=progressBar.getProgress();
                        projress=projress+10;
                        progressBar.setProgress(projress);
                        break;
                    default:
                        break;
                }
            }
});

7、AlertDialog

可以在当前的界面弹出一个对话框,这个对话框是置顶于所以界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertDialog一般都是用于提示一些非常重要的内容或者警告信息,例如防止用户误删重要内容,在删除前弹出一个确认对话框

//onCreate()方法里面添加此代码
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        Button button=(Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
/*
   首先通过AlertDialog.Builder创建一个AlertDialog的实例,然后可以为这个话题框设置标题、内容、
   可否使用back键关闭对话框等属性,接下来调用setPositiveButton()方法为对话框设置确定按钮的点击事件
  调用setNegativeButton()方法设置取消按钮的点击事件,最后调用show()方法将对话框显示出来
*/
                switch(view.getId()){
                    case R.id.button1:
                        AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
                        dialog.setTitle("This is a dialog");
                        dialog.setMessage("Something important.");
                        //设置是否可以用back键返回
                        dialog.setCancelable(false);
                        dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                            }
                        });
                        dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                            }
                        });
                        dialog.show();
                        break;
                    default:
                        break;
                }
            }
        });

    }
}

运行结果:

在这里插入图片描述

8、ProgressDialog

和AlertDialog有点类似,都可以在界面上弹出一个对话框,都能够屏蔽掉其他控件的交互能力。不同的是,ProgressDialog会在对话框中显示一个进度条,一般用于标识当前操作比较耗时,让用户耐心等待。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*
        * 通过点击按钮来获取EditText中输入的内容
        * */
        Button button=(Button) findViewById(R.id.button1);
        editText=(EditText) findViewById(R.id.edit_text);
        progressBar=(ProgressBar)findViewById(R.id.progress);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*
                * 这里也是先构建一个ProgressDialog对象,然后同样可以设置标题,内容
                * 可否取消等属性最后调用show()方法显示出来
                * progressDialog.setCancelable(true)如果填了false则不能通过back键取消
                *  就需要再数据加载出来之后使用dismiss()方法来关闭对话框,不然ProgressDialog会一直在
                * */
                switch(view.getId()){
                    case R.id.button1:
                        ProgressDialog progressDialog=new ProgressDialog(MainActivity.this);
                        progressDialog.setTitle("This is ProgressDialog");
                        progressDialog.setMessage("Loading......");
                        progressDialog.setCancelable(true);
                        progressDialog.show();
                        break;
                    default:
                        break;
                }
            }
        });

    }

运行结果:

在这里插入图片描述

举报

相关推荐

0 条评论