Android移动应用开发**Activity的事件监听**

第二篇:Activity的事件监听

实验目的
本次实验的目的是掌握控件的基于事件监听内部类、基于事件监听内部匿名类、Activity本身作为事件监听器以及直接绑定到标签等四种常用的事件处理方法。

实验任务及要求
掌握android系统的事件监听的几种处理方法。具体要求如下:
i.基于事件监听内部类实现事件监听处理;
ii.基于事件监听内部匿名类实现事件监听处理;
iii.Activity本身作为事件监听器;
iv.直接绑定到标签;

程序代码:
Activty_main.xml代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="128dp"
        android:text="@string/hello_world" 
         />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="58dp"
        android:text="按钮1" />

//内部类实现:

package com.example.chapter_5;
import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.support.v4.app.NotificationCompat.Action;
import android.view.Menu;
import android.view.TextureView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
	Button btn1;
	TextView tv1;
	int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化Button对象
        btn1=(Button)findViewBvId(R.id.button1);
        tv1=(TextView)findViewBvId(R.id.textView1);
        btn1.setOnClickListener(new myOnClickListener());
    }
  class myOnClickListener implements OnClickListener{
	  int i=0;
	  public void onClick(View arg0){
		  if(i==0){
			  tv1.setText("111111");
			  i++;
		  }else{
			  tv1.setText("000000");
			  i--;	  }  } }} 
/*//匿名内部类实现
 public class MainActivity extends Activity {
	Button btn1;
	TextView tv1;
	int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化Button对象
        btn1=(Button)findViewBvId(R.id.button1);
        tv1=(TextView)findViewBvId(R.id.textView1);
        btn1.setOnClickListener(new myOnClickListener(){
	  public void onClick(View arg0){
		  if(i==0){
			  tv1.setText("111111");
			  i++;
		  }else{
			  tv1.setText("000000");
			  i--; }	  }  })}}
 */
/*//接口实现
 public class MainActivity extends Activity {
	Button btn1;
	TextView tv1;
	int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化Button对象
        btn1=(Button)findViewBvId(R.id.button1);
        tv1=(TextView)findViewBvId(R.id.textView1);
        btn1.setOnClickListener(this)
        }
	  public void onClick(View arg0){
		  if(i==0){
			  tv1.setText("111111");
			  i++;
		  }else{
			  tv1.setText("000000");
			  i--;
		  }
	  }
 */
//布局绑定实现
/*public class MainActivity extends Activity {
	Button btn1;
	TextView tv1;
	int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化Button对象
        btn1=(Button)findViewBvId(R.id.button1);
        tv1=(TextView)findViewBvId(R.id.textView1);
	  public void onClick(View arg0){
		  if(i==0){
			  tv1.setText("111111");
			  i++;
		  }else{
			  tv1.setText("000000");
			  i--;
		  }
	  }
}*/

结果截图:
在这里插入图片描述
在这里插入图片描述

热门文章

暂无图片
编程学习 ·

Spring Boot整合Zookeeper实现配置中心

简介 使用背景 说到配置中心,目前市面上用的较多的配置中心都广为人知,比如百度的Disconf、Spring Cloud Config、携程的Apollo、阿里的Nacos等。由于项目组一直是使用的zookeeper作为配置中心,所以来学习使用。 实现原理在Zookeeper建立一个根节点,比如/CONFIG,代表某个配…
暂无图片
编程学习 ·

【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看

不是线程的安全 面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。 论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。 同理,“线程安全”也不是指线程的安全,而是指内存的安全。为什么如…
暂无图片
编程学习 ·

Leetcode 题解 - 排序

快速选择 用于求解 Kth Element 问题,使用快速排序的 partition() 进行实现。 需要先打乱数组,否则最坏情况下时间复杂度为 O(N2)。 堆排序 用于求解 TopK Elements 问题,通过维护一个大小为 K 的堆,堆中的元素就是 TopK Elements。 堆排序也可以用于求解 Kth Element …
暂无图片
编程学习 ·

Android 人民币符号在布局中实现的效果不一样的处理方法

大致效果图如下图1 2 这2个都是在java代码中 人民币符号+ 金额 以前没怎么在意ui走查的时候提出来的bug看了半天才发现问题 就是一个是是自己手打的的人民币符号,一个是从ui的效果图上复制过来的人民币符号最后自己的处理方法就是复制ui效果图的人民币符号,大致原因也知道就…
暂无图片
编程学习 ·

AttributeError: ‘list‘ object has no attribute ‘value‘

AttributeError: ‘list’ object has no attribute ‘value’需要注意self.session.run输出的格式,如下代码会报错 precise_summary = self.session.run([ts.precise_summary],{ts.x: xs, ts.y: ys}) writer.add_summary(precise_summary, epoch)AttributeError: ‘list’ ob…
暂无图片
编程学习 ·

线程池:ThreadPoolExecutor

github地址: https://github.com/lishanglei/thread-pool.git 源码 public ThreadPoolExecutor(int corePoolSize, //核心线程数int maximumPoolSize,//最大线程数量long keepAliveTime, //线程存活时间TimeUnit unit, //线程存活时间单位 BlockingQueue<Runnable> w…
暂无图片
编程学习 ·

python:matplotlib 绘制两条y轴

实例代码 x= np.arange(10) y1 = x**2 y2 = x**4 _,ax=plt.subplots() ax.plot(x,y1,b) ax.set_xlabel(x) ax.set_ylabel(y1,color=b) ax2 = ax.twinx() ax2.plot(x,y2,r) ax2.set_ylabel(y2,color=r)结果
暂无图片
编程学习 ·

POM 标签大全详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"><!--父项目的坐标。…
暂无图片
编程学习 ·

《忍者必须死3》游戏体验报告

(下文将《忍者必须死3》简称为忍3)一、背景1.1忍者必须死3流行原因分析1、情怀因素忍3的第一版游戏诞生于14年,第一版对标天天酷跑,第一版吸引用户的原因在于14年跑酷游戏众多而第一版不是氪金游戏玩法画风也算独树一帜。14年忍1的主要目标用户画像为经济能力有限的学生群体…
暂无图片
编程学习 ·

现代开发者必备:5个更流畅、更受欢迎的Python web框架

全文共1837字,预计学习时长9分钟图源:unsplash如今,可供选择的Python web框架有不少,能帮助你更快更轻松地创建web应用。本文就将为大家介绍一些更现代、使用更广泛的web框架。1.FastAPIFastAPI致力于实现轻便和快速,笔者很喜欢它,它的开发速度和简单程度令人欣慰。这对于…
暂无图片
编程学习 ·

vue前端代码优化-1

也许有人会感觉CR没有什么卵用,只要我代码实现了功能,我完成了开发任务,我就OK了,为啥还要CR??但是CR真的是有必要的,你不仅可以发现自己代码中的不足之处,待优化点,简洁明了的代码易读别人接手也会很快。1. 比如在vue项目中只有某一个组件用某一个特别长的常量对象,…
暂无图片
编程学习 ·

openfeign 转发header 实现全链路灰度发布

openfeign 转发header 实现全链路灰度发布引言实现在服务中修改Predicate加一个Interceptor配置ribbon规则,使用我们自己的规则 引言网关层看这里 之前写了网关层实现灰度发布,但是这个只能被路由一次 像是这样: 客户端->网关->根据版本号路由到应用 之后应用再调用其…
暂无图片
编程学习 ·

android 防止重复点击

1、kotlin实现 通过 Kotlin 拓展, 在拓展类中新增两个方法 fun View.OnClickListener.initSingleClickListener(vararg views: View) { views.map { it.setOnSingleClickListener(this) } } fun View.setOnSingleClickListener(listener: View.OnClickListener) { setOnClickLi…
暂无图片
编程学习 ·

mysql怎么连接navicat

可能出现下面的问题远程连接发现没有什么问题 在命令行 mysql可以正常使用执行三条指令就可以解决
暂无图片
编程学习 ·

“/“和 “\“以及“//“和“\\“有什么区别?

大家在学习生活中对于斜杠肯定不会陌生,不管在网址或者地址都会接触到这些东西,这几天刚好抽出一段时间来给大家讲解一下,有什么问题遗漏大家多多指正!!"/"正斜杠表示除法,分割;在windows系统中常用来分割“命令行参数”;正斜杠还表示虚拟路径,比如网址。&q…
暂无图片
编程学习 ·

Spring

1、概述 1.1、简介Spring:春天------>给软件行业带来了春天 2002,首次推出了Spring框架的雏形,interface21框架 Spring框架即以interface21框架为基础,重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版 Rod Johnson,Spring Framework创始人,著名作者。很…
暂无图片
编程学习 ·

leetcode215. 数组中的第K个最大元素

目录方法一:暴力解法方法二:借助 partition 操作定位到最终排定以后索引为 len - k 的那个元素(特别注意:随机化切分元素)方法三:优先队列(默认是最大堆)在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同…
暂无图片
编程学习 ·

zabbix 安装

文章目录zabbix 4.0 安装安装php7.2(也可以跳过这个依赖)安装mcrypt扩展安装仓库配置包安装 zabbix-server-mysql、zabbix-web-mysql 及zabbix-agent安装 zabbix-server-mysqlzabbix数据库创建创建数据库 zabbix添加zabbix账号导入数据:zabbix_server 配置修改启动zabbix_serve…