View相关属性分析与处理按键事件

来源:互联网 发布:小精灵字幕软件下载 编辑:程序博客网 时间:2024/05/20 12:50

相关的视图,基本上都是从此类分出来的,如Button,TextView等

下面分析一下我们常用的属性:

1、android:id给当前View设置一个在当前layout.xml中的唯一编号,可以通过调用View.findViewById()或Activity.findViewById()根据这个编号查找到对应的View。不同的layout.xml之间定义相同的id不会冲突。格式如”@+id/btnName”;

2、android:textSize设置文字大小,推荐度量单位”sp”,如”15sp”;

3、android:layout_width和android:layout_height就是控件的宽度与高度

fill_parent 就是让控件宽或者高占全屏,而wrap_content是让控件的高或宽仅仅把控件里的内容包裹住,而不是全屏。同样我们也可以为其指定相应的大小,如18sp;

4、android:text 为显示文体内容

5、LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式;

举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:layout_gravity="right"来让EditText组件在LinearLayout中靠右显示;

 

ImageView类是View类的一个子类

显示任意图像,例如图标。ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各种显示选项。

其有android:src属性:设置可绘制对象作为 ImageView 显示的内容,即图片的来源;Sets a drawable as the content ofthis ImageView. 

View的事件处理器,Event processing,public boolean onKeyDown (int keyCode, KeyEvent event)

Default implementation of KeyEvent.Callback.onKeyDown():perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER isreleased, if the view is enabled and clickable.

Parameters

keyCode

A key code that represents the button pressed, from KeyEvent.

event

The KeyEvent object that defines the button action.

Returns

·        If you handled the event, returntrue. If you want to allow the event to be handled by the next receiver, returnfalse.

使用onKeyDown()函数来获得按键的事件,同类的函数还包括onKeyUp()函数,其中keyCode为按键码,KeyEvent event表示按键事件的消息;

基本上通过 keyCode可以获得是哪一个按键响应,而通过 event 除了按键码之外,可以获得按键的动作(抬起、按下)、重复信息,扫描码等内容。

KeyEvent 主要包含以下一些接口:

finalint  getAction()          // 获得按键的动作

finalint  getFlags()           // 获得标志

finalint  getKeyCode()         // 获得按键码

finalint  getRepeatCount()    // 获得重复的信息

finalint  getScanCode()        // 获得扫描码

public staticfinal int KEYCODE_DPAD_UP

Since: API Level 1

Key codeconstant: Directional Pad Up key. May also be synthesized from trackballmotions.

Constant Value: 19(0x00000013)

把public boolean onKeyDown (int keyCode, KeyEvent event)换成

publicboolean onKeyUp(int keyCode, KeyEvent msg)结果是一样的。

源代码:

package com.android.basicapp;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.widget.ImageView;import android.widget.TextView;public class TestKeyEvent extends Activity {private static final String TAG = "TestKeyEvent"; private ImageView mImage;private TextView mAlphavalueText;private int mAlphavalue;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        mImage = (ImageView)findViewById(R.id.image);        mAlphavalueText = (TextView)findViewById(R.id.alphavalue);        mAlphavalue = 100;                mImage.setAlpha(mAlphavalue);        mAlphavalueText.setText("Alpha = " + mAlphavalue*100/0xff + "%");            }        @Override     public boolean onKeyUp(int keyCode, KeyEvent msg)    {         Log.v(TAG, "onKeyDown: keyCode =  "+ keyCode);         Log.v(TAG, "onKeyDown: String =  " + msg.toString());           switch (keyCode) {             case KeyEvent.KEYCODE_DPAD_UP:             case KeyEvent.KEYCODE_DPAD_RIGHT:                                 mAlphavalue += 20;                 break;             case KeyEvent.KEYCODE_DPAD_DOWN:             case KeyEvent.KEYCODE_DPAD_LEFT:                 mAlphavalue -= 20;                 break;             default:                 break;         }         if(mAlphavalue >= 0xFF)        mAlphavalue = 0xFF;         if(mAlphavalue<=0x0)        mAlphavalue = 0x0;         mImage.setAlpha(mAlphavalue);         mAlphavalueText.setText("Alpha = " + mAlphavalue*100/0xff + "%");         return super.onKeyUp(keyCode, msg);     }    }