• AndroidStudio003--Button组件的使用,监听及事件处理


    现在让我们来认识第二个小伙伴: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组件的使用,监听及事件处理视频略览

  • 相关阅读:
    将本地电脑文件复制到虚拟机系统中详细方法
    Vue2.0 —— Vue.nextTick(this.$nextTick)源码探秘
    电脑硬件及电脑配置知识大全
    百度竞价排名推广对比自然排名哪一个更具优势-华媒舍
    Spring Security整体架构
    差评回复话术,拿来吧你!
    IDEA的database使用教程(使用mysql数据库)
    EMI/EMS/EMC有何异同之处?-唯样商城
    年薪超20万,IT业成2021年平均工资最高的行业
    4、paxos协议
  • 原文地址:https://blog.csdn.net/weixin_53046747/article/details/125304121