Android-Button

55 阅读1分钟

image.png

响应事件

@SuppressLint("ClickableViewAccessibility")
private void initBtn() {
    /**
     * 点击事件
     */
    btn.setOnClickListener(view->{
        Toast.makeText(this, "点击响应", Toast.LENGTH_SHORT).show();
    });

    /**
     * 长按响应
     */
    btn.setOnLongClickListener(view->{
            Toast.makeText(Activity_Button.this, "长按响应", Toast.LENGTH_SHORT).show();
            return true;
            // 返回值为true,则会屏蔽点击事件(不再回调点击事件方法)。返回false,则会调用点击事件
    });

    /**
     * 触摸事件
     */
    btn.setOnTouchListener((view,motionEvent)->{
        Toast.makeText(this, "触摸事件", Toast.LENGTH_SHORT).show();
        return true;
        //  返回值为true,则会屏蔽点击事件和长按事件。返回false,则不会屏蔽
    });
}

效果展示

tutieshi_404x620_8s.gif

Toast触发位置设置

这是应用层面的设置

**第一个参数:**表示具体的位置,可以使用Gravity.CENTER、Gravity.TOP、Gravity.LEFT等表示;
**第二个参数:**表示可移动的方向,左右方向,如果想向右移动,设置改参数大于0就可以了,如果是0则不移动;
**第三个参数:**它的功能与第二个参数相同,它表示上下方向,如果想向下移动,增大该参数就可以了;
注意:后两个参数的单位都指的是像素

使用实例如下:

Toast mToast =Toast.makeText(this,"this is a toast",Toast.LENGTH_LONG);
mToast.setGravity(Gravity.CENTER,100,280);
mToast.show();

效果展示

点击事件设置了居中显示,长按设置了顶部显示。 tutieshi_404x620_6s.gif

动态改变按钮样式

想要在点击按钮前和点击按钮后的样式不一样就需要设置为:android:background="@drawable/btnborder"

背景样式设置

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按钮的默认状态,默认背景色为红色,圆角5dp-->
    <!--此处按钮样式使用的直接定义图片样式,还可以引入drawable资源文件,使用android:drawable=""引入资源文件-->
    <item android:state_window_focused="false">
        <shape>
            <solid android:color="#ff0000"></solid>
            <corners android:radius="5dp"></corners>
        </shape>
    </item>

    <!--按下时的按钮状态,按下时背景色变为蓝色,圆角5dp-->
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#0000ff"></solid>
            <corners android:radius="5dp"></corners>
        </shape>
    </item>
</selector>

效果图

tutieshi_402x180_5s.gif

添加阴影

阴影背景设置

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="-8dp"
        android:drawable="@android:drawable/dialog_holo_light_frame"
        android:left="-8dp"
        android:right="-6dp"
        android:top="-6dp">

    </item>

    <item
        android:bottom="-3dp"
        android:left="-3dp"
        android:right="-6dp"
        android:top="-6dp">

        <shape android:shape="rectangle">
            <corners android:radius="5dp"/>
            <solid android:color="@color/transparent" />
        </shape>
    </item>
</layer-list>

效果展示

image.png