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

相关的视图,基本上都是从此类分出来的,如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); 
    }
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值