现在让我们来认识第二个小伙伴:Button,翻译为按钮。Button控件继承自TextView控件,因此只要是TextView有的属性Button都有
我们的Button控件除了拥有从TextView继承来的基础属性外,还有从Drawable资源中获取的属性,Drawable资源中的方法基本上是以state_开头,主要是因为StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,在xml文件里面需要有<selector>关键节点,在这个节点里面我们就可以设置button的相关属性。这么一说可能有点不形象,我们可以使用代码来一探究竟。现在我们要实现按钮在按下,松开两种状态时背景图片的来回切换
一,设置按钮的基本属性
首先我们编写一个按钮的基本样式,如按钮的文字,文字样式,文字颜色,按钮的背景图,及当按钮为按下情况时的背景图。
1,创建按钮
二,设置按钮的背景图片
1,选择两张图
首先我们需要在drawable文件夹里面新建一些图片进去,如下为了方便起见我们先在选择android软件上已经有的矢量图提供。
接下来我们从里面挑选出两张不同的图即可
【ok后点击“next”→“finish”】
第一张图:
第二张图:
2,创建按钮图片选择文件:bt_selector.xml
res→drawable→new→Drawable Resource File
如下,设置好资源文件的文件名后,点击确定
默认的文件里面还什么都没有
现在我们在这里添加两张图,使用item标签来导入。
在上图中的代码中锤子的标签内还有个属性android:state_pressed表示当我们的鼠标按压这个按钮时为锤子的图片,如果没有按压按钮的话默认展示的就是宫殿的图片。
bt_selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_baseline_gavel_24" android:state_pressed="true"/> <item android:drawable="@drawable/ic_baseline_account_balance_24" /> </selector>
三,按钮监听事件
首先我们的按钮要有名字,才能进行绑定,如下设置按钮的id名字为bt
接下来我们要到java页面进行编写我们的监听方法
接下来在里面写上这些监听方法:点击按钮事件监听 ,长按按钮事件监听,触摸按钮事件监听
之后运行我们的android虚拟手机,点击按钮,在logcat日志捕获里面写上我们的TAG值,找到我们的监听事件
MainActivity.java
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 { final static String TAG="listener"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt= findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.e(TAG,"onClick"); } });bt.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Log.e(TAG,"onLongClick"); return false; } }); bt.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { Log.e(TAG,"onTouch"); return false; } }); } }
Button组件的使用,监听及事件处理视频略览