使用背景图片时Android慢速滑动菜单

时间:2013-07-24 03:06:07

标签: android slidingmenu android-sliding

我正在使用来自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值,菜单就可以正常滑动

2 个答案:

答案 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:backgroundimageVew等)。

同样作为推荐,您需要为所有dpi(mdpi,hpdi,...)添加背景以获得更好的性能。

我知道这是一个丑陋的解决方案,但是当其他任何事情都没有帮助时,它对我有用......