在我的应用中,用户可以点按图片缩略图以查看完整尺寸的版本。当点击缩略图时,在代码中创建一堆新视图(即没有XML),附加在视图层次结构的末尾并且发生一些缩放和旋转转换,然后显示图像的全尺寸,高分辨率版本。点击完整大小的图像会反转过渡并从视图层次结构中删除新视图。
我希望用户也可以按BACK键来反转图像过渡。但是,我似乎无法抓住KeyEvent。这就是我现在正在尝试的事情:
// Set a click listener on the image to reverse everything frameView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { zoomOut(); // This works fine } }); // Set the focus onto the frame and then set a key listener to catch the back buttons frameView.setFocusable(true); frameView.setFocusableInTouchMode(true); frameView.requestFocus(); frameView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // The code never even gets here !!! if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { zoomOut(); return true; } return false; } });编辑:我有几个人提供代码片段的答案,可以在扩展Activity的类中使用。我上面复制的代码存在于一个在多个活动中实例化的类中;我的目标是让代码监听并在一个地方捕获BACK键事件(比如OnClickListener()),而不是必须在每个活动中都有它(并从每个活动创建长而笨重的引用到缩放对象)。
答案 0 :(得分:4)
@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);
}
使用上述覆盖方法处理Back键按事件
在这些场景中使用如下 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)现在,在您的代码中,您的每个活动都会扩展Acitivity,因此请更改它以便扩展TopActivity,如下所示:
public class YourActivity extends TopActivity {
//每个活动的正常代码...... }
多数民众赞成......现在就试试
答案 1 :(得分:0)
尝试使用
公共类动态扩展活动{
@Override
public void onBackPressed() {
// Stuff
}
}