HardBirch

Android提高第十九篇之“多方向”抽屉

时间:11-03-21 栏目:安卓入门与提高 作者:张飞不张,文采横飞 评论:126 点击: 56,355 次


       在android上要实现类似Launch的抽屉效果,大家一定首先会想起SlidingDrawer。SlidingDrawer是android官方控件之一,本文的主角不是它,而是民间的控件工具集合~~~android-misc-widgets。android-misc-widgets里面包含几个widget:Panel、SmoothButton、Switcher、VirtualKeyboard,还有一些动画特效,本文主要介绍抽屉容器Panel的用法。android-misc-widgets的google工程地址:-widgets/http://code.google.com/p/android-misc,工程代码中Panel的演示效果如下:

       这个Panel控件可以轻易实现不同方向的抽屉效果,比SlidingDrawer有更强的扩展性!

       在多次使用Panel的过程中,发现Panel有个bug,会间断性出现“闪烁”,也就是在onTouchListener里面的触发ACTION_DOWN后,抽屉瞬间弹出然后瞬间回收(版本日期为Feb 3, 2009)。把原Panel的OnTouchListener,即以下代码:


















































替换为:


public boolean onTouch(View v, MotionEvent event) {
if (mState == State.ANIMATING) {
// we are animating
return false;
}

int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
if (mBringToFront) {
bringToFront();
}
touchX = event.getX();
touchY = event.getY();
}

if (!mGestureDetector.onTouchEvent(event)) {
if (action == MotionEvent.ACTION_UP) {
// tup up after scrolling
int size = (int) (Math.abs(touchX - event.getX()) + Math
.abs(touchY - event.getY()));

if (size == mContentWidth || size == mContentHeight) {
mState = State.ABOUT_TO_ANIMATE;
//Log.e("size", String.valueOf(size));
//Log.e(String.valueOf(mContentWidth),String.valueOf(mContentHeight));
}

post(startAnimation);
}
}
return false;
}
};

即可修复这个bug,并且也同样实现了OnClickListener的功能,可以把原Panel的OnClickListener给删掉了!

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: Android提高第十九篇之“多方向”抽屉

Android提高第十九篇之“多方向”抽屉:目前有126 条留言

  1. 0楼
    xuyan87101:

    [e01]

    2011-03-21 13:49 [回复]
  2. 0楼
    kf156:

    好东西,必须顶

    2011-03-21 13:49 [回复]
  3. 0楼
    stb2000:

    好东西

    2011-03-21 13:51 [回复]
  4. 0楼
    dangerb:

    [e01][e01][e01]

    2011-03-21 13:54 [回复]
  5. 0楼
    hmc1985:

    好东西![e01]

    2011-03-21 13:55 [回复]
  6. [e01]

    2011-03-21 13:57 [回复]
  7. 0楼
    terryyhl:

    [e01]

    2011-03-21 14:04 [回复]
  8. 0楼
    scyclone:

    [e01][e01][e01]

    2011-03-21 14:06 [回复]
  9. 我顶一次记一次烤鱼,你懂的

    2011-03-21 14:07 [回复]
  10. 界面有点诡异。。[e01]

    2011-03-21 14:14 [回复]
  11. [e01]

    2011-03-21 14:16 [回复]
  12. [e01][e01][e01]

    2011-03-21 14:17 [回复]
  13. 0楼
    Tomaslee:

    我射了[e01]

    2011-03-21 14:52 [回复]
  14. 0楼
    Tomaslee:

    我射了

    2011-03-21 14:54 [回复]
  15. 0楼
    Tomaslee:

    淫贱不能移[e04]

    2011-03-21 14:56 [回复]
  16. 0楼
    Tomaslee:

    从前有座山,山上有座庙。庙里有一个老和尚,

    正在念着,买票进门

    2011-03-21 14:59 [回复]
  17. 0楼
    lostlw:

    [e01]学习了,顶你~

    2011-03-21 15:51 [回复]
  18. [e01]

    2011-03-21 19:36 [回复]
  19. 0楼
    hellogv:

    回复 hudaweikevin:
    等JTAG总回国了,叫他组织一次去烤鱼!!!!

    2011-03-21 21:32 [回复]
  20. 0楼
    JAVIYLEE:

    [e03][e01]

    2011-03-21 21:49 [回复]
  21. [e03][e03]

    2011-03-22 00:20 [回复]
  22. 0楼
    jiangshide:

    [e01][e03]

    2011-03-22 08:13 [回复]
  23. 实在是太可怕了 好厉害啊

    2011-03-22 09:00 [回复]
  24. [e01]

    2011-03-22 09:28 [回复]
  25. 0楼
    lsh6688:

    [e01]

    2011-03-22 11:35 [回复]
  26. 0楼
    jeanthbian:

    [e01][e03]

    2011-03-22 12:22 [回复]
  27. 0楼
    silefeng:

    [e01]

    2011-03-22 13:35 [回复]
  28. 0楼
    kome2000:

    [e03]可以出书啦!

    2011-03-22 16:13 [回复]
  29. 0楼
    zhuliang39:

    顶····[e01]·[e01]··[e01]·[e01]··[e01]··[e01]

    2011-03-22 17:02 [回复]
  30. 有时间一定要研究下

    2011-03-22 23:47 [回复]
  31. 0楼
    hanbo_java:

    [e01][e01][e01][e01]

    2011-03-23 09:49 [回复]
  32. 0楼
    lingyu2843:

    谢谢分享。

    2011-03-23 13:31 [回复]
  33. 有点意思

    2011-03-23 14:37 [回复]
  34. 0楼
    hh7671:

    [e01][e01][e07]

    2011-03-23 18:58 [回复]
  35. 0楼
    cgzxsxz:

    好东东!

    2011-03-23 20:10 [回复]
  36. NB!不错!

    2011-03-24 09:12 [回复]
  37. [e01][e01]

    2011-03-24 09:14 [回复]
  38. 0楼
    xing8504:

    先支持了再看。

    2011-03-24 09:38 [回复]
  39. 0楼
    JAVIYLEE:

    [e03][e03][e01]

    2011-03-24 13:16 [回复]
  40. 0楼
    yuanxiaowu:

    了解了,不错呵呵

    2011-03-24 14:20 [回复]
  41. [e01]

    2011-03-24 18:39 [回复]
  42. 0楼
    C1010TV:

    [e01]

    2011-03-24 19:16 [回复]
  43. 0楼
    C1010TV:

    [e01]

    2011-03-24 19:17 [回复]
  44. 好东东,我也顶下。最近同事也在弄这玩意

    2011-03-24 22:46 [回复]
  45. 0楼
    StarStudy1:

    [e01]

    2011-03-25 10:10 [回复]
  46. 0楼
    GalfordLiu:

    hi,想请问下,他TOP那个秽动的时候,中间的内容会自动往下秽,而其它的不会,最下面的会挡住中间的,这个中间内容自动往下秽是怎么实现的呢?我在代码里没有找到相应的控制代码。另这个秽动是否可以加上动画呢

    2011-03-25 17:53 [回复]
  47. 有意思

    2011-03-25 18:30 [回复]
  48. 0楼
    gistop:

    正需要这个

    2011-03-26 18:36 [回复]
  49. 0楼
    edision88:

    相当强悍![e01]

    2011-03-27 19:22 [回复]
  50. 0楼
    gistop:

    从svn 签出了,怎么在自己的代码中使用这个呢???

    2011-03-28 10:43 [回复]
  51. 0楼
    fj4408:

    [e01]就是android-misc-widgets代码下载不了,能否共享下代码,fj4408@126.com 谢谢。

    2011-03-29 11:08 [回复]
  52. 相当不错

    2011-04-01 17:11 [回复]
  53. 0楼
    lbj05:

    图文并茂,好!

    2011-04-01 21:47 [回复]
  54. 0楼
    up_mango:

    大哥快更新拉 ….[e01]

    2011-04-07 14:10 [回复]
  55. 0楼
    OExpress:

    不错,好东西

    2011-04-11 12:55 [回复]
  56. 0楼
    jordenwu:

    围观[e04]

    2011-04-11 14:19 [回复]
  57. 0楼
    zrsyli:

    [e01],绝对的好

    2011-04-11 17:08 [回复]
  58. 0楼
    zhegucai:

    非常的好,[e01][e01][e01]

    2011-04-11 23:06 [回复]
  59. 0楼
    lishunjin:

    好像有在哪里看过这个,

    2011-04-13 16:46 [回复]
  60. 0楼
    zsc58910:

    如果能搞到源码分析一下就好了,为什么下不到源代码呢?主要是想研究其动画特效

    2011-04-14 14:41 [回复]
  61. [e06]

    2011-04-19 15:47 [回复]
  62. 0楼
    su1216:

    有个问题
    就是动画动作完成之后,图片会闪一下
    这个问题能解决吗

    2011-04-22 14:46 [回复]
  63. 0楼
    su1216:

    给view设置单击事件,当view移动走了之后,要layout一下,事件才会跟着走,但是就会出现闪烁一下得情况
    设置animation.setFillAfter(true);不会出现闪烁,但是layout之后view又移动一段距离

    2011-04-22 14:51 [回复]
  64. 0楼
    djlijian:

    LZ的无私奉献精神值得尊敬,[e01]

    2011-04-22 17:50 [回复]
  65. 请问楼主源代码在哪儿下载,谢谢

    2011-04-27 13:15 [回复]
  66. 0楼
    beikenj:

    张国威:我很想了解你们开发的腕式心电图监测仪的情况,进程顺利吗?一个关注该产品的好奇人。

    2011-05-02 17:09 [回复]
  67. 0楼
    hellogv:

    回复 beikenj:
    你是。。。。。

    2011-05-02 18:13 [回复]
  68. 0楼
    cangencong:

    [e01][e01][e01]你能发一份工程给我吗?我想学习学习这个,谢谢了。。布局文件也一起。非常感谢呀

    2011-05-05 08:59 [回复]
  69. 0楼
    cangencong:

    我的邮箱chencaogen@126.com

    2011-05-05 09:00 [回复]
  70. [e03][e03][e03],能给发份工程源码吗? android-misc-widgets代码下载不了, 这个效果真的非常不错,想学习,以后一定用得上。谢谢, 我邮箱是:zhangkai281@sina.com

    2011-05-05 12:59 [回复]
  71. [e01][e01][e01][e01][e01][e01][e01][e03][e03][e03][e03][e03][e03][e03]

    android-misc-widgets代码下载不了,能发一份么?谢谢。aaron_liu_2005@163.com

    2011-05-12 17:47 [回复]
  72. 0楼
    fj4408:

    [e01]能不能共享下源码?android-misc-widgets代码下载不了
    fj4408@126.com

    2011-05-13 11:43 [回复]
  73. 0楼
    zhengkep2p:

    [e01]起!
    个人对android 系统开发很有兴趣,可惜对java 没什么感情,要是楼主能分享一下学习经验就好了

    2011-05-15 16:05 [回复]
  74. [e01]您好,我在网上down了一个android-misc-widgets的代码,但是在Eclipse运行出错,能否把你的源码发给我?万分感谢!lingliu_08@126.com

    2011-05-17 11:19 [回复]
  75. 0楼
    shenyanjia:

    一定要顶起来了

    2011-05-18 08:53 [回复]
  76. 0楼
    we_42011:

    楼主的研究范围很广啊,佩服

    2011-06-19 14:38 [回复]
  77. 0楼
    viptmd:

    lz有个大BUG 就是这个可以完全从左边到右边。
    但是 不能完全从右边到左边。

    从右边到左边时 Handle不能过去,导致Content(加入是个图片)会被压缩。
    但是左边 到右边就不会!

    2011-06-24 17:38 [回复]
  78. 0楼
    hellogv:

    回复 viptmd:
    下载demo,然后用一下就知道了,左右都是可以的

    2011-06-25 11:12 [回复]
  79. 0楼
    viptmd:

    从左边向右边拉,图片不变形,mcontent可以完覆盖当前屏幕。 但是从右边拉,图片变形,这时 mcontent的宽+mhandle的宽=480 导致图片缩小,mhandle不能一直滑走。

    2011-06-25 11:34 [回复]
  80. 0楼
    viptmd:

    回复 hellogv:我知道左右都可以,但是右边有BUG 阿!假如手机屏幕是480*800 mcontent是一张图片4800*800的图片

    2011-06-25 11:34 [回复]
  81. 0楼
    viptmd:

    LZ 我qq 492631168 加qq聊把
    我发给你 图片看

    2011-06-25 11:42 [回复]
  82. 0楼
    viptmd:

    [e07]

    2011-06-27 10:32 [回复]
  83. 0楼
    viptmd:

    原来在-widgets/http://code.google.com/p/android-misc里面大家发现了这个问题阿 。

    2011-06-27 11:00 [回复]
  84. 0楼
    novo_851:

    有没源码啊,如果有帮共享下啊,谢谢了

    2011-06-27 15:53 [回复]
  85. 0楼
    viptmd:

    回复 hellogv:[e07]

    2011-06-27 17:45 [回复]
  86. 这是源码的下载供大家学习:http://blog.csdn.net/yuxlong2010/archive/2011/06/27/6571356.aspx

    2011-06-30 11:42 [回复]
  87. 0楼
    btzhu:

    怎么好像还是有闪烁现象??
    你说的闪烁现象是不是你那个GIF图片收回去时候的闪烁?

    2011-07-04 13:30 [回复]
  88. 0楼
    h332622492:

    的确在收回去的时候还会有闪烁

    2011-07-04 23:13 [回复]
  89. 0楼
    h332622492:

    的确在收回去的时候还会有闪烁

    2011-07-04 23:13 [回复]
  90. 0楼
    hellogv:

    [reply]btzhu[/reply]
    我所说的闪烁是指按一下handle,抽屉自动弹开回收一次

    2011-07-06 10:05 [回复]
  91. 0楼
    badibinbin:

    这个自定义panel有点问题,从上往下拉的时候handle下面的排版明显会向下移动,这肯定是因为重新layout了,但是横向拉的时候却没有这个现象,LZ知道是为什么吗?纵向下拉如果出现重新排版而不是像层一样的覆盖在下面那层上面,显然就不是slidingdrawer的效果了

    2011-07-12 09:27 [回复]
  92. 0楼
    hellogv:

    [reply]badibinbin[/reply]
    这是DEMO故意设计成这样,让开发者知道既可以“顶”也可以“浮”

    2011-07-12 22:37 [回复]
  93. 楼主的意思只是想避免双重触发把

    2011-07-14 19:28 [回复]
  94. 0楼
    hellogv:

    [reply]landuochong200[/reply]
    对,就是这个意思

    2011-07-14 22:26 [回复]
  95. 怎么没法下载工程源码 能不能发一份给我看看 我的邮箱 958119232@qq.com

    2011-07-15 09:48 [回复]
  96. 0楼
    viptmd:

    [reply]hellogv[/reply]
    不知道 LZ理解我的 意思没有
    不知道 你认为是不是一个bug

    2011-07-17 20:58 [回复]
  97. 0楼
    mosisi:

    垃圾,除了抄袭就没别的了?

    2011-07-19 14:25 [回复]
  98. 0楼
    f429800584:

    这个很好 有时候 一块屏幕不足以显示所有信息时可以用用 美观大方

    希望提供源码 可以吗? 我的邮箱是f4298005844@163.com 谢谢了

    2011-07-20 10:52 [回复]
  99. 0楼
    IT_007:

    抄袭别人的东西,能不能写点自己的东西?你敢不敢说你不是抄袭的?

    2011-08-05 16:02 [回复]
  100. 0楼
    Q_spring:

    按照lz的改了,还有闪烁的问题~~这个怎么解决啊?!

    2011-08-10 16:07 [回复]
  101. 0楼
    hellogv:

    [reply]Q_spring[/reply]
    回收时候的闪烁比较难解决,我是通过改变handler的图片颜色来降低闪烁的效果

    2011-08-11 18:33 [回复]
  102. 0楼
    Q_spring:

    改变handler的图片颜色……
    这个太不给力了吧~~~知道是什么原因导致闪烁吗?

    2011-08-12 16:37 [回复]
  103. 好东西!
    关于回收后会闪烁,是否有解决办法?坐等ing高人。

    2011-08-17 14:20 [回复]
  104. 0楼
    hellogv:

    [reply]pursuefuture[/reply]
    把handler的背景透明些,就没那么闪了

    2011-08-17 18:36 [回复]
  105. LZ,要实现抽屉默认下拉出一些,后能再上下拉动怎么实现这个效果。
    如(http://www.devdiv.com/thread-74848-1-1.html)

    这个贴的9#回帖图的效果

    2011-08-26 11:44 [回复]
  106. 0楼
    dry1689:

    麻烦发给我源码,谢谢QQ:375290562

    2011-09-09 19:42 [回复]
  107. 0楼
    dry1689:

    麻烦发下源码到这个地址 375290562@qq.com 谢谢了

    2011-09-09 19:43 [回复]
  108. 0楼
    SysThink:

    好东西

    2011-09-15 20:44 [回复]
  109. 我也需要一份源码,397300297@qq.com 谢谢……

    2011-09-20 16:12 [回复]
  110. 0楼
    kekefisht:

    那里可以下载呢?

    2011-09-23 10:29 [回复]
  111. 0楼
    songyuexin:

    哥们,能否提供一下源码,邮箱:404196578@qq.com
    谢谢了

    2011-10-22 20:24 [回复]
  112. 0楼
    toooool:

    楼主给下 源码好吗
    你给的下载链接提示404错误
    451721046@qq.com

    2011-10-24 02:08 [回复]
  113. 0楼
    Why_nono:

    楼主,能否给一下源码?邮箱:1274214867@qq.com
    谢谢!!!!

    2011-11-08 09:23 [回复]
  114. 0楼
    sxyliu520:

    楼主给份源码吧~~sxyliu520@126.com 谢谢啦!!!

    2012-03-07 13:47 [回复]
  115. 0楼
    wwangwubin:

    博主,可以发份源代码给我吗,已经没有下载了,谢谢
    wangwub@gmail.com

    2012-03-08 00:10 [回复]
  116. 0楼
    hellogv:

    [reply]wwangwubin[/reply]
    用svn客户端可以下载的,详见:http://code.google.com/p/android-misc-widgets/source/checkout

    2012-03-08 22:04 [回复]
  117. 0楼
    kongyanmin:

    这个例子有个问题,就是在布局中Panel 里面的LinearLayout放张背景图,结果LinearLayout中子内容都看不到了

    2012-03-15 14:09 [回复]
  118. [reply]pursuefuture[/reply]
    http://blog.csdn.net/lovehong0306/article/details/7451264
    解决闪烁问题

    2012-04-14 14:48 [回复]
  119. 这篇文章我喜欢

    2012-06-27 17:08 [回复]
  120. 0楼
    aishiqi:

    MARK

    2012-06-29 15:20 [回复]
  121. <style name="iWindowTitleBackground" parent="android:WindowTitleBackground"> 出现错误,我把parent="android:WindowTitleBackground"去掉就没错了,难道parent设置有问题还是android版本的问题,我用是android2.2,楼主,请问一下,parent正常的话应该怎么样修改。

    2012-07-03 13:32 [回复]
  122. 永远支持。。。good。。z

    2012-08-06 15:29 [回复]
  123. 0楼
    qeqeqe236:

    谁有源码: 546454742@qq.com

    2012-08-21 11:20 [回复]
  124. 0楼
    peterwzc:

    [quote=qeqeqe236]谁有源码: 546454742@qq.com[/quote]
    同求 15795797@qq.com

    2012-09-06 16:53 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐