一、添加按钮(点击前vs点击后)
StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点,我们只需要将Button的background属性设置为该drawable资源即可轻松实现,按下按钮时不同的按钮颜色或背景
1.drawable:引用的Drawable位图<br /> 2.state_focused:是否获得焦点<br /> 3.state_pressed:控件是否被按下<br /> 4.state_enabled:控件是否可用<br /> 5.state_selected:控件是否被选择,针对有滚轮的情况<br /> 6.state_checked:控件是否被勾选<br /> 7.state_checkable:控件可否被勾选,eg:checkbox<br /> 8.state_window_focused:是否获得窗口焦点<br /> 9.state_active:控件是否处于活动状态,eg:slidingTab<br /> 10.state_single:控件包含多个子控件时,确定是否只显示一个子控件<br /> 11.state_first:控件包含多个子控件时,确定第一个子控件是否处于显示状态<br /> 12.state_middle:控件包含多个子控件时,确定中间一个子控件是否处于显示状态<br /> 13.state_last:控件包含多个子控件时,确定最后一个子控件是否处于显示状态
注:按钮api29以上的直接背景无法显示,需到values下的styles.xml中的DuckActionBak后添加”.Bridge”即可显示背景颜色
1.在安卓系统中选择创建两个图片:<br />2.在drawable下创建选中前的按钮样式和选中后的按钮样式<br /><br /> 3.创建color文件,在color下创建选中前的颜色和选中后的颜色之间的变化<br /><br /> 4.在布局文件中添加该背景样式<br /><br /> 5.点击之后的样式<br />
二、Button事件处理(点击事件、长按事件和触摸事件)
package com.example.test;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {private String TAG="he";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn_one = findViewById(R.id.btn_one);//点击事件btn_one.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.e(TAG, "onClick: " );}});//长按事件btn_one.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {Log.e(TAG, "onLongClick: " );return false;}});//触摸事件btn_one.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {Log.e(TAG, "onTouch: "+event.getAction() );return false;}});}}
结果图:
注:MotionEvent内的触摸事件表示:
ACTION_DOWN:0
ACTION_UP:1
ACTION_MOVE:2
