3
我正在做Android上的一個小刮刮卡遊戲。我有一個ImageView放置在屏幕的中心和一個自定義視圖。我使用特定的顏色填充自定義視圖(比如綠色,以便ImageView未顯示),然後當用戶在屏幕上移動他的手指時,我想從自定義視圖中清除顏色,以便從下方顯示ImageView。我看到這個線程:Two layers, but can't show the bottom layer in android,但堅持如何創建可擦除位圖,該位圖的繪畫和路徑的繪製。 這裏是我的XML佈局:使用分層方法進行刮刮卡遊戲
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/img_background"
android:contentDescription="@string/app_name"/>
<com.example.scratchcard.TouchEventView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
而且這裏是我使用的代碼,現在的TouchEventView:
public class TouchEventView extends View {
private Paint paint = new Paint();
private Path path = new Path();
public TouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setColor(Color.TRANSPARENT);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(10f);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.GREEN);
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
// nothing to do
break;
default:
return false;
}
// Schedules a repaint.
invalidate();
return true;
}
}
我期待TouchEventView的像素在手指移動到去透明但不會發生。任何幫助將不勝感激。
問一個具體的問題。把一些代碼(不是你的整個文件)和你正面臨的問題的快照。 – Siddharth
嗨Siddarth我已經更新了建議的問題。 – ABH
看看您在sdk示例中的fingerpaint演示。 –