您的位置:首页 > 其它

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

2011-10-26 09:25 309 查看
相关的视图,基本上都是从此类分出来的,如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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: