app简单控件了解——按钮——书本示例——采用了匿名内部类与MainActivity 实现 View.OnClickListener 接口——两种方式
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_click_single" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="指定单独的点击监听器" android:textColor="#000000" android:textSize="15sp" /> <Button android:id="@+id/btn_click_public" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="指定公共的点击监听器" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout> <TextView android:id="@+id/tv_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="5dp" android:text="这里查看按钮的点击结果" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout>
代码一:
package com.example.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView tv_result; // 声明一个文本视图实例 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图 // 从布局文件中获取名叫btn_click_single的按钮控件 Button btn_click_single = findViewById(R.id.btn_click_single); // 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法 btn_click_single.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) // 点击事件的处理方法 { tv_result.setText("点击了单独监听器"); // 设置文本视图的文本内容 } }); // 从布局文件中获取名叫btn_click_public的按钮控件 Button btn_click_public = findViewById(R.id.btn_click_public); // 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法 btn_click_public.setOnClickListener(this); } @Override public void onClick(View v) // 点击事件的处理方法 { if (v.getId() == R.id.btn_click_public) // 来自于按钮btn_click_public { tv_result.setText("点击了公共监听器"); // 设置文本视图的文本内容 } } }
代码2:
package com.example.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView tv_result; // 声明一个文本视图实例 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图 // 从布局文件中获取名叫btn_click_single的按钮控件 Button btn_click_single = findViewById(R.id.btn_click_single); // 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法 btn_click_single.setOnClickListener(new MyOnClickListener()); // 从布局文件中获取名叫btn_click_public的按钮控件 Button btn_click_public = findViewById(R.id.btn_click_public); // 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法 btn_click_public.setOnClickListener(this); } // 定义一个点击监听器,它实现了接口View.OnClickListener class MyOnClickListener implements View.OnClickListener { @Override public void onClick(View v) // 点击事件的处理方法 { tv_result.setText("点击了单独监听器"); // 设置文本视图的文本内容 } } @Override public void onClick(View v) // 点击事件的处理方法 { if (v.getId() == R.id.btn_click_public) // 来自于按钮btn_click_public { tv_result.setText("点击了公共监听器"); // 设置文本视图的文本内容 } } }
效果和上面相同。
===============================================================================================================
---------------------------------------------------------------------------------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_longclick_single" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="指定单独的长按监听器" android:textColor="#000000" android:textSize="15sp" /> <Button android:id="@+id/btn_longclick_public" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="指定公共的长按监听器" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout> <TextView android:id="@+id/tv_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="5dp" android:text="这里查看按钮的长按结果" android:textColor="#000000" android:textSize="15sp" /> </LinearLayout>
代码:
package com.example.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnLongClickListener { private TextView tv_result; // 声明一个文本视图实例 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图 // 从布局文件中获取名叫btn_click_single的按钮控件 Button btn_longclick_single = findViewById(R.id.btn_longclick_single); // 设置长按监听器,一旦用户长按按钮,就触发监听器的onLongClick方法 btn_longclick_single.setOnLongClickListener(new MyOnLongClickListener()); // 从布局文件中获取名叫btn_click_public的按钮控件 Button btn_longclick_public = findViewById(R.id.btn_longclick_public); // 设置长按监听器,一旦用户长按按钮,就触发监听器的onLongClick方法 btn_longclick_public.setOnLongClickListener(this); } // 定义一个长按监听器,它实现了接口View.OnLongClickListener class MyOnLongClickListener implements View.OnLongClickListener { @Override public boolean onLongClick(View v) { // 长按事件的处理方法 tv_result.setText("单独长按"); // 设置文本视图的文本内容 return true; } } @Override public boolean onLongClick(View v) { // 长按事件的处理方法 if (v.getId() == R.id.btn_longclick_public) { // 来自于按钮btn_longclick_public tv_result.setText("公共长按"); // 设置文本视图的文本内容 } return true; } }
=======================================================================