要在4.1上运行4.0的launcher 要修改的一些地方
1。DragController.java
private final Vibrator mVibrator = new Vibrator();
改为
private final Vibrator mVibrator;
并在
public DragController(Launcher launcher); 中加入
mVibrator = (Vibrator)mLauncher.getSystemService(Context.VIBRATOR_SERVICE);//初始化
原因Vibrator的构造函数Vibrator() 已经废弃不用。只能通过getSystemService的方法来获取。
2.
如1中更改之后launcher 已经可以在4.1下启动。
但点击应用键后,还是会出错
出错地方Launcher.java
toView.setFastAlpha(0f);
做如下修改,增加系统版本判断
if(Build.VERSION.SDK_INT <= 15)
{
toView.setFastAlpha(0f);
}
else
{
toView.setAlpha(0f);
}
3. 在Launcher.java, Workspace.java两个文件中搜索fast
将出现fast的所有函数都使用2中的方法修改。
4.按1,2,3中修改后,launcher便可在4.1.1的模拟器中运行。
此时如果在android 4.2环境下运行,还是会报错。
报错位置:Workspace.java 中函数
private void updateChildrenLayersEnabled()
{
...
((ViewGroup)getChildAt(i)).setChildrenLayersEnabled(enableChildrenLayers);
...
}
修改为:
if(Build.VERSION.SDK_INT <= 16)
{
((ViewGroup)getChildAt(i)).setChildrenLayersEnabled(enableChildrenLayers);
}
暂时不知道用什么函数来代替setChildrenLayersEnabled,也不清楚这句有什么作用。
希望大神指点一二。
做如上修改后,4.2模拟器下,能正常运行。