同时点击buttons

一、问题再现

View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Context context = getContext();
            setButtonsEnabled(false);
            Log.e("click", "id:" + v.getId());
            switch (v.getId()) {
                case R.id.button1:
                    context.startActivity(XXX);
                    break;
                case R.id.button2:
                    context.startActivity(XXX));
                    break;
            }
        }
    };

// button1.performClick();
// button2.performClick(); 
// cannot reproduce the problem, performClick will call onClick immediately.

虽然在listener里设置了setEnabled(false)但是当点击非常快的时候,是无法保证的。因为click的event已经被送入了queue中。决定这个的不是onclick调用的快慢,而是点击的快慢。
之前利用setEnabled的做法在6.0+以上的device上测试过没有问题,但是在4.2.2上面测试没有通过。

需要研究下event的dispatch。

二、另一种单event的模式

android:splitMotionEvents="false"

在buttons的父view中设置以上的属性就可以让他的所有子view在同一时间只能接受一个event。就避免了同时点击buttons的问题。

http://developer.android.com/intl/ja/about/versions/android-3.0.html

http://y-anz-m.blogspot.jp/2011/02/android-30-platform-3.html

Vue.js 是一种用于构建用户界面的渐进式前端框架,Vue 的版本分为 Vue.js 和 VueX,其中 Vue.js 是核心库部分,而 VueX 则主要用于状态管理。 关于您提到的“点击图片放大”功能,在 Vue 项目中实现通常涉及以下几个步骤: 1. **HTML 结构**:首先创建包含图片元素的 HTML 结构,并添加一些额外的属性以便识别点击事件,如 `@click` 绑定到某个方法。 ```html <div id="app"> <img :src="imageSrc" @click="handleImageClick" alt="Sample Image"> </div> ``` 2. **JavaScript 逻辑**:在 Vue 实例中,通过数据绑定 (`v-bind`) 将图片路径赋值给 `imageSrc` 属性,并定义一个处理图像点击的函数 `handleImageClick`。 ```javascript new Vue({ el: '#app', data: { imageSrc: 'path/to/your/image.jpg' }, methods: { handleImageClick() { // 进行图片放大的操作,这可以基于不同的需求使用不同的方法实现 this.scaleImage(); }, scaleImage() { // 可以在这里设置图片缩放比例、显示弹出层等交互效果 alert('图片已放大'); } } }); ``` 3. **样式调整**:通常需要对放大后的图片以及相关的 UI 元素进行样式调整,以提供更好的用户体验。这可以在 CSS 中完成,例如增加过渡效果,或者利用 Vue 的组件和插件进一步优化。 4. **响应性和状态管理**:由于 Vue 是基于组件化的框架,因此可以根据实际需要拆分组件来管理局部状态,如当前是否处于放大状态等,以保持应用的响应性和效率。 5. **性能优化**:在处理大量图片或者高频率的操作时,要注意性能优化。例如,避免不必要的 DOM 操作、合理使用虚拟滚动技术等。 --- ### 相关问题 - 点击图片放大的 Vue 应用实例 1. **如何检测图片是否被用户拖拽而非点击**:为了区分点击与拖拽,通常在 `handleImageClick` 函数内部检查鼠标事件的 `event.button` 或者 `event.buttons` 字段,以确定用户是在单击还是双击或按下左键后移动了鼠标。 2. **如何实现动态加载大图资源**:当用户点击小图时,预加载大图资源可以提升用户体验。可以借助 Vue 生命周期钩子如 `mounted()` 或 Vue 插件如 Axios 来实现异步加载图片。 3. **如何处理图片文件过大导致的性能问题**:优化图片大小(如使用在线工具压缩图片)、采用懒加载技术(Lazily Loading Images),只在需要的时候加载图片,同时监控浏览器缓存策略,确保有效利用缓存减轻服务器负载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值