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:

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

更多相关文章

  1. 赵雅智_名片夹(4)_Android中listview可折叠伸缩仿手风琴效果(静态)
  2. 透明效果
  3. [原]Android应用程序组件Content Provider应用实例
  4. Android Animations动画使用详解
  5. 去掉移动网页、android webview 加载网页、点击时不同手机上的默
  6. Android得到已安装的应用程序信息!

随机推荐

  1. Android(安卓)NDK开发之旅36--FFmpeg音视
  2. linux android V4l2 的一些精品文章连接
  3. (转帖)Android重力感应Demo
  4. [转]Android Market 链接的生成与分享
  5. Android自学笔记(番外篇):全面搭建Linux环境
  6. Android 性能分析工具 TraceView
  7. Android(安卓)持续集成实践(二)——配置 Do
  8. android 获取服务器文件流 hander
  9. Android:启动页有短暂白屏的解决方法
  10. Consider adding android:paddingStart=