安卓开发基于android Studio平台——控件TextView的使用,控件Button的使用,StateListDrawable StateListDrawable

一.控件TextView

1.基础属性详解

1. layout _ width : 组件的宽度
2. layout _ height : 组件的高度
3.id: 为 TextView 设置一个组件 id 
4. text : 设置显示的文本内容
5. textColor : 设置字体颜色
6.textStyle: 设置字体风格,三个可选值: normal (无效果), bold (加粗), italic (斜体)
7. textSize : 字体大小,单位一般是用 sp 
8.background: 控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片
9. gravity : 设置控件中内容的对齐方向, TextView 中是文字, ImageView 中是图片等等。

代码实现效果:

<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">


    <com.example.wzyproject.MyTextView
        android:id="@+id/tv_one"
        android:layout_width="match_parent"
        android:layout_height="176dp"
        android:text="@string/tv_one"
        android:textColor="@color/black"
        android:textStyle="bold"
        android:textSize="30sp"
        android:gravity="center_vertical"
        android:shadowDx="10.0"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"

        />
</LinearLayout>

2带阴影的 TextView 

1. android : shadowColor : 设置阴影颜色,需要与 shadowRadius 一起使用
2. android : shadowRadius : 设置阴影的模糊程度,设为0.1就变成字体颜色了,建议使用3.0
3. android : shadowDx : 设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置
4.android: shadowDy : 设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置

3.实现跑马灯效果的 TextView 

1. android : singleLine : 内容单行显示
2. android : focusable : 是否可以获取焦点
3. android : focusableinTouchMode : 用于控制视图在触摸模式下是否可以聚焦
4. android : ellipsize : 在哪里省略文本
5. android : marqueeRepeatlimit : 字幕动画重复的次数
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"

只是输入以上这些远远不够,以下方法皆可:

3.1设置点击方式

通过

android:clickable="true"

可实现点击后开启跑马灯效果

3.2自定义一个TextView


创建java类,实现构造方法

package com.example.wzyproject;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.TextView;

public class MyTextView extends TextView {
    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;
    }
}

 最后还要调用isFocused,此时activity_main.xml中改动

 3.3结尾加入requestFocus用来请求焦点

 二.butuon控件

1.StateListDrawable 

StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点< selector >,我们只需要将 Button 的 background 属性设置为该 drawable 资源即可轻松实现,按下按钮时不同的按钮颜色或背景。

1. drawable : 引用的 Drawable 位图
2. state _ focused : 是否获得焦点
3. state _ pressed : 控件是否被按下
4. state _ enabled : 控件是否可用
5.state_ selected : 控件是否被选择,针对有滚轮的情况
6. state _ checked : 控件是否被勾选
7. state _ checkable : 控件可否被勾选, eg : checkbox 
8. state _ window _ focused : 是否获得窗口焦点
9. state _ active : 控件是否处于活动状态, eg : slidingTab 
10.state_ single : 控件包含多个子控件时,确定是否只显示一个子控件
11.state_ first : 控件包含多个子控件时,确定第一个子控件是否处于显示状态
12.state_ middle : 控件包含多个子控件时,确定中间一个子控件是否处于显示状态
13.state_ last : 控件包含多个子控件时,确定最后一个子控件是否处于显示状态
    <Button
        android:text="我是按钮"
        android:background="@drawable/btn_selector"
        android:layout_width="200dp"
        android:layout_height="100dp"

    />

先创建两个照片:

使用backgroundTint可以设置点击前后按钮颜色的变化

 在button块中引入

android:backgroundTint="@color/btn_color_selector"

 可实现效果如下:

 

注意:设置前景色会将字体覆盖!

android:foreground="#ff00ff00"

2.button事件处理

private static final String TAG = "led";
Button btn = findViewById(R.id.btn);

1.点击事件

//点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e(TAG, "onClick: " );
            }
        });

2.长按事件

//长按事件
        btn.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                Log.e(TAG, "onLongClick: " );
                return false;
            }
        });

3.触摸事件

//触摸事件
        btn.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                Log.e(TAG, "onTouch: " );
                return false;
            }
        });

触摸事件会有三个模型:ACCTION_DOWN     ACCTION_UP        ACCTION_MOVE

 此时通过event运行后会有

 当我们的Ontouch为True时,系统里面会处理onClick和onLongClick两个方法,此时不会在调用了。

相当于一种依赖关系,onlongclick依赖ontouch,onclick依赖onlongclick。

当我们加入时

android:onClick="leoClick"

 此时leoClick替换了上述的点击事件onClick,

    public void leoClick(View view){
        Log.e(TAG, "leoClick: " );
    }

 点击后效果如上。

猜你喜欢

转载自blog.csdn.net/WZY22502701/article/details/129896229