Android_2021年10月8日

2021年10月8日记录

安卓文件夹的含义:

  • layout:放你的布局文件
  • drawable:可以放置文件
  • mipmap:可以放置文件,但是这个效果会更好

一、TextView

可以完成的效果:

  • 对长文本进行显示处理
  • 支持Html代码
  • 内容有样式、链接效果

在XML文件中,如果内容比较长,可以在res下面的values文件夹下面的strings.xml文件里面来定义文字name:

比如:

<resources>
    <string name="haha">123</string>
</resources>

这个haha就是自己定义的name,然后在activity_main.xml文件里面:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/haha"
     />

这样就可以使用自己定义的文字了

如果文字太多,一页放不完,可以在activity_main中使用ScrollView,这样就可以实现滚动条的,来上面翻阅文字。但是需要注意的是,使用了ScrollView,在xml文件里面只能出现一个TextView空间,如果想使用两个TextView,就需要把TextView这个包起来来实现布局。

如果只想显示一行,就比如QQ签名只显示一行,可以使用android:singleLine="true"来实现。这个android:singleLine="true"已经过时了,但是还可以使用,替代方法是android:lines="1"。

实现文字跑马灯效果

android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"

其中:

android:singleLine="true":设置单行

android:ellipsize="marquee"
android:focusable="true":设置可以获取焦点
android:focusableInTouchMode="true":设置触摸时可以获取焦点
android:marqueeRepeatLimit="marquee_forever":设置跑马灯的重复

通用属性(一):

  • android:orientation="vertical":整体布局是垂直的
  • android:layout_width
  • android:layout_height
    • match_parent:填充整个父容器
    • wrap_content:根据所含内容确定
    • 正整数单位dp:精确大小
  • android:id
    • @id/valName:使用已经存在的id
    • +id/valName:添加新的id
  • android:layout_margin:正整数单位dp:和相邻空间或边缘的距离
  • android:padding:正整数dp:空间内容距离空间边缘的距离
  • android:background:十六进制的颜色值:颜色作为北京
    • mipmap/resourceId:图片作为背景
  • android:textSize:调节字的大小
    • 22sp 注意是以sp结尾的
  • android:textColor:调节字的颜色
    • “#00fff”:字体的颜色,十六进制的
  • android:lineSpacingMultiplier="2" 调节行距的,1没有效果
  • android:lineSpacingExtra="15sp" 调节行距的,这个可以根据大小来调节,效果更好

通用属性(二):

  • android:layout_gravity:是根据父控件来说的
  • android:gravity:是对控件自身内容对自己的限定
    • center_horizontal:水平居中
    • center_vertical:垂直居中
    • center:水平垂直居中
    • left:居左
    • right:居右
    • top:居顶
    • bottom:居底
  • android:visibility:
    • visible:可见状态
    • invisible:不可见状态,但是保留控件位置
    • gone:不可见状态,也不保留控件位置

注意的东西:

  • 如果在使用android:gravity和android:layout_gravity中,还是按照android:gravity的优先级来实现的

二、EditText

  • inputType:输入的类型

    • textEmailAddress:邮箱地址
    • phone:手机号
    • number:只能正整数
    • textpassword:可以数字字母以及字符
    • numberSigned:整数
    • numberDecimal:小数
  • android:maxLength="12" :最大长度

  • hint:提示信息

    • android:hint="请输入密码"
    • android:textColorHint="#fff000" :提示信息的颜色

三、Button注册点击事件

首先需要在xml文件里面定义按钮的name

<Button
        android:id="@+id/butten1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="通过自定义内部类来实现点击事件"
        />
  • 自定义内部类

    Button butten1 = findViewById(R.id.butten1);
            MyClickLister mcl = new MyClickLister();
            //点击事件:点击的时候触发
            butten1.setOnClickListener(mcl);        //为按钮注册点击事件监听器
    
    //这个是使用自定义内部类的写法,需要自己定义一个内部类
    class MyClickLister implements View.OnClickListener{
    
            @Override
            public void onClick(View view) {
                Log.e("TAG","刚刚点击的按钮是注册了内部类监听对象的按钮");
            }
        }
    
  • 匿名内部类:适用于有唯一操作的按钮

    这个写法要比自定义内部类的写法更简洁,推荐使用

     Button butten2 = findViewById(R.id.butten2);
            butten2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.e("TAG","刚刚点击的按钮是匿名内部类的按钮");
                }
            });
    
  • 当前Activity去实现事件接口

    首先需要在类上面更改

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        
    }
    

    然后创建类

     @Override
        public void onClick(View view) {
    
            Log.e("TAG","用本类实现的");
        }
    

    然后在类里面实现

    Button butten3 = findViewById(R.id.butten3);
    butten3.setOnClickListener(this);
    
  • 在xml文件中添加点击事件属性

    <Button
            android:id="@+id/butten4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="在xml文件中绑定"
            android:onClick="myClick"
    

    然后

    //4.通过xml绑定点击事件
        //参数:被点击的控件对象
        public void myClick(View view) {
            Log.e("TAG","通过XML绑定的点击事件");
        }
    

四、ImagView图像控件

用于显示和控制图像的控件,可以对它进行放大做小旋转等操作

图片命名规范:英文字母、数字、下划线

  • android:src 指定前景图片资源 ,前景图片是会根据比例变化的
  • android:background 设置背景,背景会根据空间进行拉伸的

还有一个

  • ImagButten:就是把一张图片当成一个按钮来使用

五、ProgressBar

默认是圆形的,没有刻度,只是一个不断旋转的动画效果,可以设置style,可以显示传统的水平带刻度进度条

常用属性:

  • style="?android:attr/progressBarStyleHorizontal" 设置为水平的进度条
  • android:progress="30" 设置刻度为30
  • android:max="200" 设置最大刻度为200
  • android:indeterminate="true" 设置水平滚动的进度条

默认圆形的进度条:

<ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

改为水平的带有刻度的进度条,刻度为30,默认进度为100(刻度和最大值都是可以设置的)

<ProgressBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal"
        android:progress="30"
        android:max="200"
        />

水平滚动的进度条:

  <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal"
        android:indeterminate="true"
        />

实现缓慢加载进度条的样式

//创建滚动条
        ProgressBar progressBar = findViewById(R.id.pro1);
        progressBar.setProgress(80);

        //实现加载的过程,通过线程来实现
        //创建线程
        new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 100; i++) {
                    progressBar.setProgress(i);
                    try {
                        //每完成一个进度就稍微等一下
                        Thread.sleep(30);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();

需要注意的是,在android 4.0之后是不能直接在线程中操作控件的,但是进度条是个特例

posted @ 2021-10-08 17:46  听,花开了  阅读(59)  评论(0)    收藏  举报