在我的应用程序中,用户可以点击图像缩略图查看完整版本。轻触缩略图时,将在视图层次结构的末尾以代码(即无XML)创建一组新视图,并进行一些缩放和旋转转换,然后显示图像的完整大小和高分辨率版本。点击全尺寸图像将反转转换并从视图层次中移除新视图。
我希望用户也能够按后退键来反转图像转换。然而,我似乎没能抓住关键事件。这就是我目前正在尝试的:
//在图像上设置一个click listener来反转所有内容
frameview.setOnClickListener(新建onClickListener(){
@重写
public void onclick(视图arg0)
{
zoomout();///这很好
}
(});
//将焦点设置在帧上,然后设置一个键侦听器来捕捉后退按钮
frameview.setFocusable(真);
frameview.setFocusableInTouchMode(真);
frameview.requestFocus();
frameview.setOnKeyListener(新建onKeyListener(){
@重写
公共布尔onkey(视图v,int keycode,keyevent事件)
{
//代码根本就没到过这里!!!!
if(keycode==keyevent.keycode_back&&event.getrepeatcount()==0)
{
ZoMoOUT();
回归真实;
}
返回false;
}
(});
编辑:我得到了一些人的回答,他们提供代码片段,以便在扩展活动的类中使用。我在上面复制的代码存在于一个在多个活动中实例化的类中;我的目标是让侦听和捕获back key事件的代码位于同一位置(如onclickListener()),而不是在每个活动中都必须拥有它(并创建长而笨拙的引用从每个活动到缩放对象)。
最佳答案
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
//Your logic or stuff
return true;
}
else
return super.onKeyUp(keyCode, event);
}
使用上面的overide方法处理back key press事件
在这些场景中,使用如下
1)创建如下活动:
/**
* Top Activity that extends all Activity
*/
package com.com.com;//change your package name
import android.app.Activity;
import android.view.KeyEvent;
public class TopActivity extends Activity {
protected BaseActivity _activity;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
//your stuff if you wanna to have anything
return true;
}
else
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
//your stuff if you wanna to have anything
return true;
}
else
return super.onKeyUp(keyCode, event);
}
}
2)现在在您的代码中,您的每个活动都扩展了活动性,因此对其进行更改,使其扩展topActivity,如下所示:
public class YourActivity extends TopActivity {
//每个活动的正常代码…
}
就是这样…现在试试看