我正在使用来自https://github.com/jfeinstein10/SlidingMenu的滑动菜单库除了一件小事之外它工作得很好:当我将滑动菜单附加到以图像作为背景的活动时,它开始滞后。当我向右或向左滑动时,菜单需要一些时间来响应。谁看过这个吗?任何帮助将不胜感激。
我正在使用大约650 Kb的png图像,但我也尝试使用低于20 Kb的低质量图片,但问题仍然存在。
我的min SDK是13,目标SDK是17(我也尝试更改这些值,但它没有帮助)
这是我使用滑动菜单的一项活动的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/my_background"
android:orientation="vertical" >
如果我删除android:background值,菜单就可以正常滑动
答案 0 :(得分:1)
您应该为每个可绘制文件夹添加单独的背景图像(drawable-mdpi,drawable-hdpi,drawable-xhdpi等)。我测试在基本可绘制文件夹中只有一个图像,它打开和关闭非常缓慢而且根本不顺利。如果您向所有可绘制文件夹添加不同大小的背景图像,它就像一个魅力。
答案 1 :(得分:0)
如果某人(像我一样)仍有滑动菜单和背景图片的问题,我会尝试解释如何解决这个问题。 @netis解决方案对我没有帮助。
如你所知,如果你不在幻灯片菜单中使用背景问题就会消失,所以我们需要使用别的东西而不是标准的android背景。我为此使用了TextureView
。
在我的xml for menu中,我添加了:
<TextureView
android:id="@+id/menu_texture_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
添加初始化菜单时的活动代码:
final TextureView texture = (TextureView) menuView.findViewById(R.id.menu_texture_view);
final Drawable picture = getResources().getDrawable(R.drawable.menu_background);
texture.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Canvas canvas = texture.lockCanvas();
picture.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
picture.draw(canvas);
texture.unlockCanvasAndPost(canvas);
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
});
基本上我们将背景设置为TextureView
,而不是使用标准的安卓方式(android:background
,imageVew
等)。
同样作为推荐,您需要为所有dpi(mdpi,hpdi,...)添加背景以获得更好的性能。
我知道这是一个丑陋的解决方案,但是当其他任何事情都没有帮助时,它对我有用......