`
baseline
  • 浏览: 43572 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android的焦点(Focus)问题

    博客分类:
  • Java
阅读更多

今天解决了一个Android平台下的焦点问题。发现其中关键问题的所在是Android的touchMode。从JavaSwing平台过来的人,都会关注setFocusable()和requestFocus()方法,但是在Android的View中还有另外的两个个方法,setFocusableInTouchMode()和requestFocusFromTouch()方法。这个两个方法就是解决Android上的焦点获取问题的关键。

同时在View类中,还有一个isInTouchMode(),可以帮助我们在监听Focuse事件时判断是否执行click(). 代码如下:

 

 

    ImageButton.OnFocusChangeListener mFocusChangeListener = new ImageButton.OnFocusChangeListener(){
       
        public void onFocusChange(View v, boolean hasFocus) {
            Log.d("FocuseChange", "Focuse has changed.");
              if (hasFocus) {

                       // 如果是touchmode就执行click,否则就会只是选中。
                  v.setBackgroundDrawable(getResources().getDrawable(R.drawable.));

                  if (v.isInTouchMode()){

                      ((ImageButton)v).performClick();
                  }

              } else {
                  v.setBackgroundDrawable(getResources().getDrawable(R.));
                  v.getBackground().setAlpha(100);
              }
           
        }
    };

 

 

分享到:
评论

相关推荐

    Android 蓝牙 音频焦点(Audio Focus)——卡音,多年安卓开发经验,从实际项目中获取到的经验,对安卓开发者非常有

    在Android平台上,音频焦点(Audio Focus)是一个至关重要的概念,它涉及到多应用音频播放的协调,尤其是在涉及蓝牙设备如蓝牙耳机或扬声器时。当多个应用试图同时播放音频时,音频焦点机制确保了音频流之间的和谐共存...

    android中模拟焦点移动

    首先,了解Android焦点系统的基础。在Android中,每个可以接收输入的View(如Button、EditText)都有一个焦点状态,分为两种:获得焦点(focused)和无焦点(unfocused)。焦点的移动是由系统的焦点管理器自动处理的...

    Android焦点控制原理及源码

    下面我们将深入探讨Android焦点控制的原理以及如何通过源码来调整这一行为。 首先,Android中的焦点控制主要包括四个步骤: 1. **焦点获取**:当用户操作(如点击或按键)使得某个控件变得可聚焦时,该控件会获取...

    详细介绍Android中的视图焦点Focus的使用

    Android 视图焦点 Focus 的使用详解 Android 中的视图焦点(Focus)是一个重要的概念,它决定了在非触摸屏设备中哪个控件可以接收事件和处理响应。在 Android 系统中,只有一个控件可以拥有焦点,其他控件都不能...

    android 焦点事件

    7. **焦点策略**:Android提供了多种焦点策略,如FOCUS_FORWARD、FOCUS_BACKWARD、FOCUS_UP、FOCUS_DOWN等,可以根据布局结构和用户需求定制焦点转移逻辑。 8. **焦点监听**:开发者可以使用`OnFocusChangeListener...

    android获取焦点后按钮变大

    "android获取焦点后按钮变大"这个话题就是关于如何在用户点击或触摸按钮时改变其大小,使其更加突出,从而吸引用户的注意力。这个效果通常通过自定义样式、主题或者布局动画来实现。下面将详细探讨如何实现这一功能...

    android TV常见需求,焦点item保持居中 —— RecyclerView自定义焦点滑动位置和滑动速度。

    android tv开发和移动端开发最大的不同就是多了一个焦点处理的逻辑。尤其是类似Recyclerview这样本身带有滑动效果,为了醒目的显示当前焦点在什么位置,需要滑动的时候回添加大量的动画、高亮、阴影等效果。   ...

    android按钮被选点击得到焦点失去焦点切换图片

    在这个自定义按钮类中,我们通过`onFocusChange`监听焦点变化,并根据`hasFocus`来设置对应的图片。同时,`onTouchEvent`处理按钮的按下和抬起事件,改变按钮的图片。注意,这里我们使用了自定义属性`R.styleable....

    android跑马灯效果,失去焦点也可以实现

    标题提到的"android跑马灯效果,失去焦点也可以实现"意味着即使控件没有获取到焦点,仍然可以保持滚动效果。这在设计用户界面时特别有用,因为有时候我们希望信息能够持续吸引用户的注意力,而不仅仅是当用户交互时...

    android焦点图banner带圆点

    "android焦点图banner带圆点"指的是在Android应用中实现带有圆点指示器的焦点图效果。这种设计常见于新闻、电商、社交等应用的首页,用户可以通过点击或滑动来浏览不同内容。接下来,我们将详细探讨如何在Android中...

    android 具有背景图片的按钮 ImageButton的焦点事件以及事件处理

    参数包括`hasFocus`(表示是否获得焦点)、`direction`(焦点改变的方向)和`previouslyFocusedRect`(上一个拥有焦点的视图的矩形区域)。 2. `onTouchEvent()`:这是处理所有触摸事件的主要方法。当用户触摸`...

    android TV 焦点自动换行

    3. **Focus Handling**: 自定义ViewGroup或者使用现有的ViewGroup(如HorizontalScrollView)时,需要重写`onRequestFocusInDescendants()`和`onInterceptFocusSearch()`方法,确保焦点能在横轴和纵轴上正确流动。...

    Android TV 焦点框移动的实现方法

    Android TV 焦点框移动的实现方法 Android TV 焦点框移动是 TV 开发中的一项重要技术,焦点框的移动可以帮助用户更好地浏览和选择菜单项、本篇文章主要介绍了 Android TV 焦点框移动的实现方法。 焦点框移动的...

    android 焦点图自动切换例子

    在Android开发中,焦点图(通常也称为轮播图或滑动广告)是一种常见的UI元素,用于展示一系列图片或内容,通常会自动进行循环切换,为用户提供动态的视觉体验。本示例着重介绍如何在Android应用程序中实现焦点图的...

    焦点抢占问题

    在Android开发中,"焦点抢占问题"是一个常见的挑战,特别是在涉及到多层级视图组件交互时,如ListView嵌套ViewPager的情况。ListView是Android中用于显示大量数据的列表控件,而ViewPager则用于展示可以左右滑动的多...

    完美得解决listview和edittext抢夺焦点和数据混乱问题

    在Android开发中,ListView与EditText的交互经常遇到一些棘手的问题,主要表现为焦点管理与数据同步混乱。ListView作为常用的列表控件,用于显示大量可滚动的数据;EditText则用于用户输入文本。当两者结合使用时,...

    Android 焦点图片滚动源码.zip

    在Android开发中,焦点图片滚动通常用于创建动态的广告轮播或者界面焦点展示区,能够提升用户体验并吸引用户的注意力。这个"Android 焦点图片滚动源码.zip"压缩包包含了一个简单的Android项目,用于演示如何实现这一...

    EditText焦点的自动跳转

    5. **XML布局中的焦点转移**:在布局文件中,我们也可以使用`android:nextFocusDown`属性来指定当当前`EditText`失去焦点时,焦点应移动到哪个`EditText`。例如: ```xml android:id="@+id/editText1" android:...

Global site tag (gtag.js) - Google Analytics