`
java-admin
  • 浏览: 1381935 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

Android中View如何切换Focus

阅读更多

视图(View)类代表了一种基本的用户界面组成模块。一个视图占据了屏幕上的一个矩形区域,并响应绘制图形和事件处理。视图类是窗体类(Widget)的基类,而窗体类用来生成可交互的用户图形接口(interactive GUI)。

视图类的使用窗口中所有的视图构成一个树形结构。要想增加视图,既可以用直接添加代码的方法,也可以在一个或者多个XML文件中声明新视图构成的树。在视图类的子类中,有的可以用来控制,有的具有显示文字、图片或者其他内容的功能。

当视图树被创建后,以下这若干种通用操作将可以被使用:
1.设置属性(properties):比如,可以设置TextView类的一个实例的文本内容。不同的子类可以用来设置的属性与方法不同。注意:只有编译时能够检测到的属性才可以在XML布局管理(layout)文件中设置。

2.设置输入焦点(focus):为了响应用户输入,整个框架将处理移动的焦点。如果想把焦点强制指向某一个特定的视图,必须调用requestFocus()方法。
3.设置监听器(listener):在视图中,允许设置监听器来捕获用户感兴趣的某些事件。比如说, 在所有的视图中,无论视图是获得焦点还是失去焦点,都可以通过设置监听器来捕获。可以通过调用setOnFocusChangeListener(View.OnFocusChangeListener) 来注册一个监听器。在其他视图子类中,提供了一些更加特殊的监听器。比如,一个按键(Button)可以触发按键被按下的事件。
4.设置是否可视(visibility):可以通过调用setVisibility(int)来显示或者隐藏视图。

下面我以ImageButton为例来说一下如何使用
setOnFocusChangeListener来实现focus的切换.

UI如图显示.当focus切换时, 在中间的TextView上显示每个ImageButton的内容.



代码如下:
public class MainMenu extends Activity {
    private ImageButton btnLogin, btnSet, btnAbout, btnHelp, btnVis;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainmenu);
        setTitle("Main Menu-Select One Item#");
       
        // Get the buttons, and set listeners.
        btnAbout = (ImageButton)findViewById(R.id.ibtnAbout);
        btnAbout.setOnClickListener(listener); 
        btnAbout.setOnFocusChangeListener(focusListener);

        //...

        //default focus in Login button.
        btnLogin.requestFocus(); //Can not work! Y??? Any one knows this?
     
        // Get the TextView to display text.
        tvName = (TextView)findViewById(R.id.tvMenu);
        tvName.setText("");      
    }

    OnClickListener listener = new OnClickListener(){
        public void onClick(View arg0){
            switch(arg0.getId()){
            case R.id.ibtnAbout:
                tvName.setText("About");
                Intent in = new Intent(MainMenu.this, about.class);
                startActivity(in);
                break;
            //...   
            }
        }
    };

    OnFocusChangeListener focusListener = new OnFocusChangeListener(){
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus){
                switch(v.getId()){
                case R.id.ibtnAbout:
                    tvName.setText("About");                   
                    break;
                //....   
                }
            }       
        }
    };
}

这里有一个问题,我还是不明白. 希望有哪位朋友告知. 当切换到此Activity的时候, 我希望默认的Focus是在Button Login上, 我调用
btnLogin.requestFocus();doestn't work! WHY?????

刚开始学Andorid, 知之甚少, 边学边练, 献丑了!
分享到:
评论

相关推荐

    Android实现图片自动切换功能(实例代码详解)

    Android实现图片自动切换功能是Android开发中一个非常有用的功能,可以在许多应用程序中使用,例如电子商务平台、新闻客户端等。下面我们将通过实例代码详细介绍如何实现图片自动切换功能。 一、布局设计 在实现...

    android之view学习示例

    在Android开发中,View是构建用户界面的基本元素,它涵盖了屏幕上的每一个可视组件,如按钮、文本框、图片等。本示例将深入探讨Android View的相关知识,帮助开发者更好地理解和运用这一核心概念。 1. **View类基础...

    android-view-animations-java,Awesome Library可使用视图动画系统执行倾斜动画,如关注、反弹、淡入、翻转、旋转、滑动和缩放视图。.zip

    在Android开发中,视图动画(View Animation)是创建动态用户界面的重要手段,它可以为应用程序增添生动性,提高用户体验。本项目"android-view-animations-java"是一个Awesome Library,专为Java开发者提供了丰富的...

    android 焦点事件

    在Android系统中,焦点事件是用户交互的重要组成部分,它涉及到View和ViewGroup之间的焦点转移,以及与之相关的触摸事件处理。本文将深入探讨Android中的焦点事件及其源码,旨在帮助开发者更好地理解和应用这一核心...

    android中模拟焦点移动

    在Android开发中,焦点移动是用户界面交互的重要组成部分,它涉及到控件间的切换,比如在按钮、文本框、列表视图等之间的导航。当用户使用物理键盘或触摸屏幕时,焦点会从一个可聚焦的视图移动到另一个,通常伴随着...

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

    在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它允许用户进行交互,如触发一个操作或导航到另一个页面。按钮的状态变化通常包括默认状态、被选中(按下)、获得焦点以及失去焦点等。为了提升用户...

    android 焦点图自动切换例子

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

    Android自定义View实现五星好评效果

    Android自定义View实现五星好评效果是Android开发中的一种常见需求,特别是在电商、评测类应用中。今天,我们将详细介绍如何通过自定义View实现五星好评效果。 首先,我们需要在res/values/attrs.xml文件中定义...

    android获取焦点后按钮变大

    在Android开发中,我们经常需要对用户交互进行精细化设计,以提供更好的用户体验。"android获取焦点后按钮变大"这个话题就是关于如何在用户点击或触摸按钮时改变其大小,使其更加突出,从而吸引用户的注意力。这个...

    Android-Fotoapparat好用的Android相机API

    在Android应用开发中,为用户提供一个流畅、功能丰富的相机体验是一项挑战。传统的Android相机API虽然提供了基础的功能,但往往需要开发者进行大量的定制工作才能满足用户需求。这时,第三方库如Fotoapparat就显得尤...

    Android参考源码-调用Android中的软键盘.zip

    在Android开发中,调用软键盘是常见的操作,特别是在用户需要输入信息的场景下,如登录、注册、编辑文本等。这份"Android参考源码-调用Android中的软键盘.zip"资源提供了一种实现方式,它包含了一个示例项目,可以...

    安卓Android源码——调用Android中的软键盘.zip

    调用软键盘的API主要位于`android.view.inputmethod.InputMethodManager`类中。该类提供了多种方法来控制输入法的显示和隐藏,如`showSoftInput()`和`hideSoftInputFromWindow()`。以下是一个简单的示例,演示如何在...

    android控件放大被遮盖已解决

    在Android开发过程中,有时我们需要对特定控件进行放大操作,以突出显示或提供更好的用户体验。然而,当一个控件放大后,可能会超出其原本的布局边界,导致被其他控件遮盖,这无疑会给用户界面带来困扰。"android...

    android自定义数字键盘

    public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { inputField.setSelection(inputField.getText().length()); } } }); ``` 至于“数字随机生成”功能,可以添加一个按钮,点击时在...

    View事件传递机制Demo源码

    首先,我们要知道Android中的事件传递主要涉及两种类型的事件:触摸事件(Touch Events)和焦点事件(Focus Events)。触摸事件是我们最常见的一种,如点击、滑动等,而焦点事件则与键盘输入相关。本Demo主要关注...

    android自定义相机 支持自动聚焦 闪光灯和摄像头切换 拍照 储存 屏幕高亮

    在Android开发中,创建一个自定义相机应用是常见的需求,特别是在涉及到图像处理或者特定拍照功能的应用中。本项目实现了一个全面的相机功能,包括自动聚焦、切换前后摄像头、控制闪光灯以及屏幕高亮,同时也支持将...

    Android事件分发机制(三)事件分发和消费

    在Android系统中,事件分发机制是用户与应用交互的核心环节,主要涉及到触摸事件的传递、处理和响应。本文将详细解析Android事件分发机制的第三部分:事件分发和消费,帮助开发者深入理解这一关键过程。 事件分发...

    Android EditText 带清空按钮

    总结一下,创建一个带有清空按钮的`EditText`在Android开发中并不复杂,只需要在布局文件中添加`EditText`和按钮,然后在Java或Kotlin代码中设置点击事件和文本监听。通过以上步骤,我们可以创建一个用户友好的输入...

    android仿小米盒子高亮凸显效果

    在Android开发中,为了提升用户体验,常常需要对用户交互元素进行独特的设计,比如焦点变化时的高亮凸显效果。本示例"android仿小米盒子高亮凸显效果"着重讲解如何在Android应用中实现类似小米盒子在获取焦点后,...

Global site tag (gtag.js) - Google Analytics