旋转时绘制的多个位图

时间:2014-07-10 12:06:46

标签: android android-canvas

我有一个通过SeekBar进度旋转png图像的活动。它吸引了我多针。为什么这样做? 针和速度计并不完美,它们仅用于测试:)

on onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {

...

    iv = (ImageView)findViewById(R.id.imageView1);
    bMap = BitmapFactory.decodeResource(getResources(), R.drawable.rodykle);
    workingBitmap = Bitmap.createBitmap(bMap);
    mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
    yourCanvas = new Canvas(mutableBitmap);

稍后我使用此

  public void drawneedle(){
    yourCanvas.rotate(speed, mutableBitmap.getWidth()/2, mutableBitmap.getHeight()/2);
    yourCanvas.save(Canvas.MATRIX_SAVE_FLAG);
    yourCanvas.drawBitmap(mutableBitmap, 0,0, null);
    yourCanvas.restore();
    iv.setImageBitmap(mutableBitmap);
}

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mtr="http://schemas.android.com/apk/res/com.mindtherobot.samples.thermometer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top"
    android:orientation="vertical" >

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:max="270" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/spidometras" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="40sp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true" />

    </RelativeLayout>


</LinearLayout>

33 69 211

1 个答案:

答案 0 :(得分:0)

您是否清除了之前绘制内容的内圈?

您可以使用canvas.drawColor(0, Mode.CLEAR);

执行此操作

此外,在我看来,您需要将configChanges标记添加到AndroidManifest.xml文件中的活动标记,以防止onCreate在活动旋转时多次运行。

android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"

要知道活动已旋转,您需要覆盖

onConfigurationChanged(Config newConfig) 

方法并检查newConfig变量的新方向