`
mmdev
  • 浏览: 12916829 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Dialog运用与返回键的拦截.

 
阅读更多

新 浪 淘 宝

开发中,会经常用dialog显示,可是对dialog 返回的监听,很少运用. 比如:新浪微博,淘宝等等,用来显示图片,都是点击一下出来,新浪还好,对dialog 点击事件监听,淘宝更离谱,只有点击返回剪才可以退出.


示例:

微博界面 点击加载图片 动画ing...


动画执行结束 点击图片或者点击back按钮 动画执行结束
第一种实现方法:
效果很简单,就是我们建一个普通的dialog 渲染我们要展示的图片,我们只需要对图片进行动画,这点大家都比较熟悉,就不多说了.
我要说明的一点是:我们点击返回键的时候需要控制dialog 里面图片消失的动画,这点怎么控制呢,平常对于dialog 就一闪就没了。
我们要借住dialog的一些监听接口:setOnKeyListener();
dialog.setOnKeyListener(new OnKeyListener() {
int i;// 用于控制按下和抬起动作
@Override
public boolean onKey(DialogInterface dialog1,
int keyCode, KeyEvent event) {
i++;
if (i == 2
&& keyCode == KeyEvent.KEYCODE_BACK)
imageView_H
.startAnimation(animation_out);
animation_out
.setAnimationListener(animationListener);




return true;
}
});
为什么要创建变量i呢,因为我们执行这个方法会执行2遍,为什么呢,机制问题,小弟新手,查了下是说 down,up两个事件,可是我在着脸拦截dialog.onKeyDown(keyCode, event); 执行两次都为true,而dialog.onKeyUp(keyCode, event);两次都为false,查了好久没有解决,所以就用本方法,自己控制吧,所以就创建了一个变量,不过目的是让只执行一次,其实也是up的时候执行,不过效果实现就ok了,
第二种方法:
我们创建一个集成dialog的自定义dialog类.

public class Mydialog extends AlertDialog
{




public Mydialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
}


public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK )
{
imageView_H.startAnimation(animation_out);
animation_out.setAnimationListener(animationListener);.
}
return super.onKeyDown(keyCode, event);
}

}
我建议大家用第二种方法,比较直观一点. 有什么比较好的方法可以给我说下,谢谢在先了。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics