android 注解点击事件,android click事件注解
定义注解:
package com.fyfeng.android.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD })
public @interface ClickMethod {
int id();
}
注解处理:
package com.fyfeng.android.annotations;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class AnnotationUtils {
private static final String tag = AnnotationUtils.class.getSimpleName();
public void init(final Activity activity) {
this.bindClick(activity);
}
public void bindClick(final Activity activity) {
Method[] methods = activity.getClass().getDeclaredMethods();
for (int k = 0; k < methods.length; k++) {
final Method m = methods[k];
Log.d(tag, "method[" + m.getName() + "]");
if (!m.isAnnotationPresent(ClickMethod.class)) {
continue;
}
ClickMethod click = m.getAnnotation(ClickMethod.class);
Log.d(tag, m.getName() + " 发现注解.");
final View view = activity.findViewById(click.id());
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
m.invoke(activity, new Object[] {});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
});
}
}
}
使用示例:
package com.fyfeng.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.fyfeng.android.annotations.AnnotationUtils;
import com.fyfeng.android.annotations.ClickMethod;
public class MainActivity extends Activity {
private static final String tag = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AnnotationUtils autil = new AnnotationUtils();
autil.init(this);
}
@ClickMethod(id = R.id.text)
public void doClick() {
Log.d(tag, "----------------------");
}
@ClickMethod(id=R.id.text2)
public void doSecClick(){
Log.d(tag, "----------------------1");
}
}
android 注解点击事件,android click事件注解相关推荐
- android按钮点击变化,Android实现按钮点击效果(第一次点击变色,第二次恢复)...
1.首先创建一个按钮 android:id="@+id/click" android:layout_width="fill_parent" android:la ...
- 不同dom的blur事件和click事件发生冲突
直接上测试代码 <!DOCTYPE html> <html lang="en"> <head><title>不同dom的blur事件 ...
- 移动端touch事件和click事件的区别
移动端touch事件和click事件的区别 1.touch事件 以下是四种touch事件 touchstart: //手指放到屏幕上时触发 touchmove: //手指在屏幕上滑动 ...
- blur事件与click事件冲突的解决办法
问题 当对节点同时添加 blur事件 以及 click事件,触发 click事件 的时候程序报出这样的一个错误(Chrome浏览器): Uncaught NotFoundError: Failed t ...
- android viewgroup点击变色,Android ViewGroup事件分发
上篇文章已经分析了Android的Touch事件分发.如果没看的建议先看一下.Android View的Touch事件分发. 接下来我们开始写几种场景,得出一个初步的执行顺序,然后我们按照这个顺序开始 ...
- android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件
看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...
- android 模拟手指点击,『Android Tip』-- 模拟手势操作
平时 Android 开发中总会遇到奇葩的功能或者需求,这里做个记录和积累,以便后面开发过程中遇到类似的问题,可以快速的解决.Android tips 前言 这个版本终于快结束了,历时一个月的时间,这 ...
- click和touchmove vue_移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法...
这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且to ...
- blur事件与click事件的冲突
定义: blur事件:当元素失去焦点时发生 blur 事件 click事件:当单击元素时,发生 click 事件 在开发中会发现存在以下场景,点击当前输入框以外的其他元素.此时输入框失焦触发blur事 ...
- blur事件和ajax,js关于blur事件阻塞click事件
出现场景: 页面有一个输入框A绑定了blur事件,且这个事件里面需要用到ajax请求数据,然后有一个按钮B绑定了点击事件: 在A里面输入完信息后, 还没失去焦点的时候点击B,这个时候发现只执行了A的b ...
最新文章
- python文件输入和输出
- 学python有哪些书推荐-有什么Python学习的书籍和学习资源推荐?
- 两张超级大表join优化
- 《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——1.3 常用网页设计软件...
- js多层对象数组 合并_13个你必须知道的JS数组技巧
- python模拟点击网页按钮_网页自动化开发(第一章)
- Linux内存page,Linux虚拟内存管理 - Page Table的作用
- win7电脑浏览器证书过期的解决方法
- SpringBoot------拦截器Filter的使用
- Hibernate 教程(一)[Hibernate的基本配置]
- 禁止QQ自动转义表情字符
- java多线程 Semaphore CountDownLatch ScheduledExecutorService
- 使用iText对pdf中敏感信息进行马赛克处理
- Google商店应用上架注意事项
- 38家公司上榜2020大中华区最佳职场;中国新生代企业家调研白皮书正式发布 | 美通企业日报...
- 钟平程序员逻辑英语——回归理性——中英文对切基本公式(1-1)
- MySQL备份恢复之XtraBackup
- Chicken Soup 【阻碍你成长的最大敌人竟然是它-无意识】
- 源火星球——青龙 详细教程
- “贵系万花筒”:探秘清华计算机系背后的“酒井”文化
热门文章
- spring安全_Spring安全–幕后
- c++编写web服务_让我们编写一个文档样式的Web服务
- jaxb 命名空间_在JAXB解组期间应用名称空间
- permgen_什么是PermGen泄漏?
- java jsr_Java EE 7中包含哪些JSR?
- esb 和mq_使用保险丝结构管理MQ和ESB的大型部署,第一部分
- 超越JAX-RS规范:Apache CXF搜索扩展
- 使用Infinispan作为持久性解决方案
- 带有自定义模块的JBoss EAP上的骆驼
- 在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体