4

我正在使用来自https://github.com/jfeinstein10/SlidingMenu的滑动菜单库它工作得很好,除了一件小事:当我将滑动菜单附加到具有图像作为背景的活动时,它开始滞后。当我向右或向左滑动时,菜单需要一些时间才能响应。有没有人见过这个?任何帮助将不胜感激。

我正在使用大小约为 650 Kb 的 png 图像,但我也尝试使用小于 20 Kb 的低质量图片,但问题仍然存在。

我的最小 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 值菜单滑动就好了

4

2 回答 2

2

您应该为每个可绘制文件夹(drawable-mdpi、drawable-hdpi、drawable-xhdpi 等)添加单独的背景图像。我测试了基本可绘制文件夹中只有一张图像,它打开和关闭非常缓慢,而且一点也不顺畅。如果您将不同大小的背景图像添加到所有可绘制文件夹,它就像一个魅力。

于 2014-07-25T14:06:55.437 回答
0

如果有人(像我一样)仍然有滑动菜单和背景图像的问题,我会尝试解释我如何解决这个问题。@netis 解决方案对我没有帮助。如您所知,如果您不在幻灯片菜单中使用背景,问题就会消失,因此我们需要使用其他东西而不是标准的 android 背景。我用TextureView这个。在我的 xml 菜单中,我添加了:

<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 方式(android:backgroundimageVew)。

另外作为建议,您需要为所有 dpi(mdpi、hpdi、...)添加背景以获得更好的性能。

我知道这是一个丑陋的解决方案,但是当没有其他方法无济于事时,它对我有用......

于 2015-08-20T14:05:17.077 回答