我有一个通过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>
答案 0 :(得分:0)
您是否清除了之前绘制内容的内圈?
您可以使用canvas.drawColor(0, Mode.CLEAR);
此外,在我看来,您需要将configChanges标记添加到AndroidManifest.xml
文件中的活动标记,以防止onCreate在活动旋转时多次运行。
android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"
要知道活动已旋转,您需要覆盖
onConfigurationChanged(Config newConfig)
方法并检查newConfig变量的新方向