安卓APP_ 控件(1)—— TextView

本文是关于安卓APP开发中TextView控件的使用,包括创建容器、设置字体样式、添加字体阴影以及实现弹幕跑马灯效果。内容涵盖了XML布局和Java后台逻辑,还分享了自动获取焦点的两种方法以及一些必备的开发快捷键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为学习笔记,是安卓APP学习的开篇。

根据教学视频内容记录学习过程。笔记适合复习的时候看,初次学习还是建议先看一遍视频教程(老师讲得很好哦)

总体感觉是老师是建立在你有一定的基础上的教学,所以有一些知识不太清晰,需要自己多加琢磨(可能是我太菜了)

作者:Android架构解析:leo老师
教学视频地址:【2021最新版】Android(安卓)开发零基础入门课程【全套】

README

注意:一定要有爪蛙基础,先把陈立臣老师的爪蛙基础课看完。

可以回顾java基础系列笔记:如:java的面向对象基础(3) —— 接口,抽象类、内部类、匿名内部类

还有一个很棒很好用的学习网站,好用到爆炸!!
菜鸟教程:Android 基础入门教程

一、容器的创建与TextView控件的使用:字体样式

下面涉及到两个主要的文件类型:

.xml负责页面布局效果,.java负责后台逻辑。

先做一个最简单的例子,显示效果如下图:
在这里插入图片描述

(1)MainActivity.java

重点看Main中注释的两句,其他都是框架。在Main中,主要创建了一个控件对象 tv_one

package com.example.myfirst;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView; //引入控件的包

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv_one = findViewById(R.id.tv_one); //创建控件对象
        tv_one.setText("huatianzhu");//这里设置的内容会把xml中的相同设置覆盖
                                    //所以你看到的不是“就这就这”    
    }
}

(2)activity_main.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">

    <!-- 
    id               控件id,唯一标识一个控件;
    textColor        设置颜色引用了color名为teal_200里面的内容;
    -->

    <!-- 控件设置-->
    <TextView
        android:id="@+id/tv_one"
        android:text="@string/tv_one"
        android:textColor="@color/teal_200"
        android:textStyle="italic"
        android:textSize="70sp"
        android:background="@color/purple_200"
        android:gravity="center_vertical"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>

</LinearLayout>

这里首先创建了一个容器,把控件放在容器中,并且控件的范围不得大于容器。

控件框范围的单位dp和字体大小sp都是为了进行不同机型,不同屏幕大小而适配。

(3)colors.xml

可以理解为颜色库

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="purple_500">#FF6200EE</color>
    <color name="purple_700">#FF3700B3</color>
    <color name="teal_200">#FF03DAC5</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>

</resources>

调用一个颜色示例:android:textColor="@color/teal_200"

(4)strings.xml

可以理解为字符串库

<resources>
    <string name="app_name">myFirst</string>
    <string name="tv_one">就这就这</string>
</resources>

调用方法与颜色相同

二、设置字体阴影

如下图:

在这里插入图片描述
activity_main.xml的基础上添加:(注意不用添加TextView框架,这里仅为了CSDN中的代码高亮)

<!--
	shadowColor    阴影颜色
	shadowRadius   阴影模糊度,一般设置为3.0
	shadowDx       阴影横向偏离
	shadowDy       阴影纵向偏离
-->

<TextView
	   android:shadowColor="@color/purple_200"
	   android:shadowRadius="3.0"
	   android:shadowDx="15.0"
	   android:shadowDy="15.0" "
	   />

三、字体弹幕跑马效果

效果:

在这里插入图片描述
注意:先把.java创建对象的那两句去掉。

主要修改添加activity_main.xml中的代码

<!--
	   singleLine           内容单行显示:文本内容长度超过控件框进行自动换行
	   ellipsize            文本超出时,怎样处理省略的文本:这里设置为跑马灯(默认为换行)   
	   marqueeRepeatLimit   跑马灯效果循环次数
	   focusable            是否可以获得焦点
	   focusableInTouchMode 是否可以通过触摸获取焦点
	   clickable            是否可以点击
-->

<TextView
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:clickable="true"
        />

TextView要获取焦点才能够实现跑马灯效果,上述的示例是通过触摸点击获取焦点。

但滚动的字幕一般多用于“自动”开启,所以还有以下两种办法自动获取焦点

(1)创建一个新的类myTextView,继承原来的TextView并且重写它的方法:

如下:在继承TextView的时候完成了它的前三个构造方法,并重写了一个方法实现直接获取焦点。

package com.example.myfirst;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

import androidx.annotation.Nullable;

//老师是没有在app目录下创建的,而是新建了一个和app一样的文件夹,所以我在继承的时候要把这个TextView写全
public class myTextView extends androidx.appcompat.widget.AppCompatTextView {
    public myTextView(Context context) {
        super(context);
    }

    public myTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public myTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean isFocused() {
        return true;    //方法重写,直接return true,直接获取焦点
    }
}

此时在activity_main_xml中要更改为刚才创建的类:
在这里插入图片描述这样运行程序便直接开始跑马灯效果。

(2)直接在控件TextView结束后请求焦点:

在activity_main_xml中

	<TextView
	
		.../>
	    
	<requestFocus/>

其他:必备快捷键

Ctrl + /
注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号

Ctrl + Alt + L
格式化代码,可以对当前文件和整个包目录使用

Ctrl + R
在当前文件进行文本替换

Ctrl + Y
删除光标所在行 或 删除选中的行
alt+左/右方向键
回到上一个/下一个位置

想使用自动补全时,最快的办法是跳着输入字母。
比如你想快速输入android:layout_width,就直接打alawi等等,打几个关键字然后回车自动补全.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值