【问题标题】:Rotate a bitmap inside a layer-list在图层列表中旋转位图
【发布时间】:2011-09-06 07:35:54
【问题描述】:

我正在尝试旋转bitmap,它包含在layer-list 内的item 中。 layer-list 在 Android XML 文件中定义。我想从 Android 活动中调整 bitmap 的旋转。我知道可以使用Matrix 旋转位图,但是我不确定如何更新 XML 文件中包含的位图。

到目前为止我的代码是:

// Inside Activity
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
                R.drawable.face_line_green);

        int width = bitmapOrg.getWidth();
        int height = bitmapOrg.getHeight();

        Matrix matrix = new Matrix();
        matrix.postRotate(10);

        Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
                width, height, matrix, true);

// Inside XML
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:top="6px">
            <bitmap android:src="@drawable/face_line_red" android:gravity="center" android:id="@+id/line_red" />
        </item>
        <item android:left="4px">
            <bitmap android:src="@drawable/face_line_green"
                android:gravity="center" android:id="@+id/line_green" />
        </item>
    </layer-list>

【问题讨论】:

    标签: java android xml bitmap layer


    【解决方案1】:

    您可以使用RotateDrawable 轻松旋转Bitmap。因此,执行Bitmap 旋转的最简单方法是将其包装在RotateDrawable 中,该RotateDrawable 也将包装在您的LayerListDrawable 中。

    【讨论】:

    • 感谢您的帮助,但我还是有点卡住了。所以我像这样设置 XML:&lt;item android:left="4px"&gt; &lt;rotate android:id="@+id/line_green"&gt;&lt;bitmap android:src="@drawable/face_line_green" android:gravity="center" /&gt;&lt;/rotate&gt; &lt;/item&gt;?然后如何在主 Activity 中使用 RotateDrawable 更改旋转?
    • 您需要更改您的Drawable的当前级别(通过setLevel
    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2016-10-20
    • 2013-08-11
    相关资源
    最近更新 更多