zoukankan      html  css  js  c++  java
  • Android 开发日志之仿三星Launcher

    Android 仿三星Launcher

    1、实现横向滑动分页:

    在AllApps2D.java的addApps方法中,以16个应用程序为一页存到ArrayList<ArrayList<ApplicationInfo>> mAllAppsLists

    并创建对应的GridView,将这些View添加给以ViewGroup为基类的滑动类对象。

    问题:删除某个应用程序后,其所在的页面会导致无法点击,要过好一会儿才能将应用程序的图标删除并可以点击。

    想到的当然是GridView可能没有刷新的原因,于是,在AllApps2D.java的removeApps中,试了postInvalidate/flush/等,但是没有效果,最终在基于ViewGroup的滑动类的onLayout中发现,其方法体被if(change)包着,通过打LOG,change值除了第一次为true,其它都为false,再对比Workspace.java中的同名方法,并没有用if(change)包着,于是,去掉if(change),解决。

    问题:所有应用程序初始化完毕标志

    2、实现编辑,并在拖动过程中有动画效果。

    查看android的动画效果有四种

    AlphaAnimation 渐变透明度动画效果
    ScaleAnimation 渐变尺寸伸缩动画效果
    TranslateAnimation 画面转换位置移动动画效果
    RotateAnimation 画面转移旋转动画效果

     即我们要用的是转换位置移动动画效果。

    GridView中取到View;定义每个主菜单ICON的动画起止坐标;

    for(int i = 0; i < mNeedMoveId - id; i++){
      v_s = mGridViewList.get(mCurrentPage).getChildAt(moveid);
      v_d = mGridViewList.get(mCurrentPage).getChildAt(moveid + 1);
      mAnimation_Translate = new TranslateAnimation(Animation.ABSOLUTE,0,
          Animation.ABSOLUTE,v_d.getLeft() - v_s.getLeft(),
          Animation.ABSOLUTE,0,
          Animation.ABSOLUTE,v_d.getTop() - v_s.getTop());
            
      mAnimation_Translate.setDuration(1000);       
      v_s.startAnimation(mAnimation_Translate);
      moveid--;       
    }

    problem:

    移动后如何停止到最终位置?

  • 相关阅读:
    基础数据类型补充、集合、深浅拷贝
    python中(id,is,==,)小数据池,代码块
    字典:python的基础数据类型
    五四青年节后记
    test
    agl---atumotive grade linux开篇
    传感器
    金字塔原理
    写在2017年底
    C# 输出16进值
  • 原文地址:https://www.cnblogs.com/jimwind/p/2679181.html
Copyright © 2011-2022 走看看