虽然骚尼手机卖的不怎么样,但是有些东西还是做的挺好的,工业设计就不用说了,索尼的相册的双指任意缩放功能也是尤其炫酷。其桌面小部件滚动相册我觉得也挺好的,比谷歌原生的相册墙功能好多了,网上搜了一下也没发现有人写这个,于是,下面就介绍下我的高A货。

首先是效果图:

    优质Android小部件:索尼滚动相册

主要手势操作有:

  1. 上/下满速移动,可以上滑/下滑一张图片
  2. 上/下快读移动,则根据滑动速度,上滑/下滑多张图片
  3. 单击则请求系统图库展示该图片

  该小部件的主要优点:在屏幕内的小范围内提供一个很好的图片选择/浏览部件,尤其是切换图片时有很强的靠近/远离动画感,增加好感。

代码分析

  刚开始想这个小部件的时候以为是利用多个ImageView叠加实现的效果,例如谷歌原生的该部件就是利用多个ImageView叠加形成的,但是效果远比不上这个。但觉得通过多个ImageView叠加可能会没这么流畅,性能上也不好。该效果本身也比较规律,应该可以通过一个View来实现,达到更好的性能。于是通过View Hierarchy分析,sony这个果然是通过一个View实现的,于是通过如下方式这个小部件。

  代码主要由三个部分组成:

  • RollImageView:实际的View
  • CellCalculater:用来实时计算每张图片的绘制区域以及透明度,这个是本小部件的核心部件。接口定义如下:  
    /**
     * get all rects for drawing image
     * @return
     */
    public Cell[] getCells();

    /**
     *
     * @param distance the motion distance during the period from ACTION_DOWN to this moment
     * @return 0 means no roll, positive number means roll forward and negative means roll backward
     */
    public int setStatus(float distance);


    /**
     * set the dimen of view
     * @param widht
     * @param height
     */
    public void setDimen(int widht, int height);

    /**
     * set to the status for static
     */
    public void setStatic();
View Code

相关文章:

  • 2022-12-23
  • 2021-10-15
  • 2021-08-09
  • 2022-12-23
  • 2022-02-23
  • 2021-08-02
  • 2021-08-10
  • 2022-01-18
猜你喜欢
  • 2022-12-23
  • 2021-04-13
  • 2022-12-23
  • 2021-12-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
相关资源
相似解决方案