ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

安卓APP_ 控件(1)—— TestView

2021-03-28 21:59:44  阅读:404  来源: 互联网

标签:xml 控件 安卓 activity import main APP TextView


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

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

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

TestView

README

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

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

一、容器的创建与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/>

标签:xml,控件,安卓,activity,import,main,APP,TextView
来源: https://blog.csdn.net/weixin_44742824/article/details/115283233

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有