這裏是我的代碼。當我膨脹顯示異常的視圖名爲android.view.InflateException:我的MainActivity類中的二進制XML行#8。也導致應用程序崩潰, 如果在代碼中的任何過錯?。請幫我android.view.InflateException:XML佈局中的二進制XML文件行
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/ic_launcher">
<com.example.newscratch.PaintView
android:layout_gravity="center"
android:id="@+id/img1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
PaintView.java
package com.example.newscratch;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public class PaintView extends View implements OnTouchListener {
private static final String TAG = "PaintView";
Bitmap Bitmap1, Bitmap2;
Bitmap Transparent;
Bitmap overlay;
int X = -100;
int Y = -100;
Canvas c2;
private boolean isTouched = false;
// List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
public PaintView(Activity context) {
super(context);
initView(context);
}
private void initView(Activity context) {
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(this);
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
Transparent = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.main);
Bitmap2 = BitmapFactory
.decodeResource(getResources(), R.drawable.ic_launcher);
c2 = new Canvas();
c2.setBitmap(Transparent);
// c2.drawBitmap(Bitmap1, 0, 0, null);
c2.drawBitmap(Bitmap2, 0, 0, paint);
paint.setAlpha(0);
paint.setStyle(Style.FILL);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
paint.setAntiAlias(true);
}
private static Point getDisplaySize(final Display display) {
final Point point = new Point();
point.x = display.getWidth();
point.y = display.getHeight();
return point;
}
@Override
public void onDraw(Canvas canvas) {
System.out.println("onDraw");
c2.drawCircle(X, Y, 50, paint);
if(isTouched)
{
canvas.drawBitmap(Bitmap1, 0, 0, null);
}
canvas.drawBitmap(Transparent, 0, 0, null);
}
public boolean onTouch(View view, MotionEvent event) {
isTouched = true;
X = (int) event.getX();
Y = (int) event.getY();
invalidate();
return true;
}
}
class Point {
float x, y;
@Override
public String toString() {
return x + ", " + y;
}
}
MainActivity.java
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// View bgView = findViewById(R.id.background);
}
}
請發佈異常堆棧跟蹤,包括嵌套的「異常引起的」。 – laalto
您是否爲您正在嘗試開發的應用程序添加了適當的庫,如果是,請嘗試清理您的項目或重新啓動eclipse。或者如果沒有,然後檢查兩次並添加它。 – InnocentKiller