
我正在尝试创建一个自定义视图 – 手指画,我遇到此错误的麻烦,我不知道如何解决它.谁能告诉我有什么问题?
logcat的:
08-04 08:34:01.171: E/AndroIDRuntime(15664): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.boenka.mk/com.boenka.mk.Draw}: androID.vIEw.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1956)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.ActivityThread.access0(ActivityThread.java:123)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.os.Handler.dispatchMessage(Handler.java:99)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.os.Looper.loop(Looper.java:137)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.ActivityThread.main(ActivityThread.java:4424)08-04 08:34:01.171: E/AndroIDRuntime(15664): at java.lang.reflect.Method.invokeNative(Native Method)08-04 08:34:01.171: E/AndroIDRuntime(15664): at java.lang.reflect.Method.invoke(Method.java:511)08-04 08:34:01.171: E/AndroIDRuntime(15664): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)08-04 08:34:01.171: E/AndroIDRuntime(15664): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:551)08-04 08:34:01.171: E/AndroIDRuntime(15664): at dalvik.system.NativeStart.main(Native Method)08-04 08:34:01.171: E/AndroIDRuntime(15664): Caused by: androID.vIEw.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:691)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:739)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:489)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:396)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:352)08-04 08:34:01.171: E/AndroIDRuntime(15664): at com.androID.internal.policy.impl.PhoneWindow.setContentVIEw(PhoneWindow.java:251)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.Activity.setContentVIEw(Activity.java:1835)08-04 08:34:01.171: E/AndroIDRuntime(15664): at com.boenka.mk.Draw.onCreate(Draw.java:49)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.Activity.performCreate(Activity.java:4465)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920)08-04 08:34:01.171: E/AndroIDRuntime(15664): ... 11 more08-04 08:34:01.171: E/AndroIDRuntime(15664): Caused by: java.lang.classNotFoundException: com.boenka.mk.DrawPanel08-04 08:34:01.171: E/AndroIDRuntime(15664): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)08-04 08:34:01.171: E/AndroIDRuntime(15664): at java.lang.classLoader.loadClass(ClassLoader.java:501)08-04 08:34:01.171: E/AndroIDRuntime(15664): at java.lang.classLoader.loadClass(ClassLoader.java:461)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.createVIEw(LayoutInflater.java:552)08-04 08:34:01.171: E/AndroIDRuntime(15664): at androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:680)08-04 08:34:01.171: E/AndroIDRuntime(15664): ... 21 more这是我的DrawingPanel类:
public class DrawingPanel extends VIEw implements OntouchListener { private Canvas mCanvas; private Path mPath; private Paint mPaint, mBitmapPaint; private ArrayList<PathPoints> paths = new ArrayList<PathPoints>(); private ArrayList<PathPoints> undonePaths = new ArrayList<PathPoints>(); private Bitmap mBitmap; private int x, y; private int color; public DrawingPanel(Context context, AttributeSet attrs) { super(context, attrs); this.color = color.BLACK; // setFocusable(true); // setFocusableIntouchMode(true); this.setontouchListener(this); mBitmapPaint = new Paint(Paint.DITHER_FLAG); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setcolor(color); mPaint.setStyle(Paint.Style.stroke); mPaint.setstrokeJoin(Paint.Join.ROUND); mPaint.setstrokeCap(Paint.Cap.ROUND); mPaint.setstrokeWIDth(3); mPaint.setTextSize(30); mPath = new Path(); paths.add(new PathPoints(mPath, color, false)); mCanvas = new Canvas(); } public voID colorChanged(int color) { this.color = color; mPaint.setcolor(color); } @OverrIDe protected voID onSizeChanged(int w, int h, int olDW, int oldh) { super.onSizeChanged(w, h, olDW, oldh); // mBitmap = AddReportItemActivity.mPhoto; float xscale = (float) w / (float) mBitmap.getWIDth(); float yscale = (float) h / (float) mBitmap.getHeight(); if (xscale > yscale) // make sure both dimensions fit (use the // smaller scale) xscale = yscale; float newx = (float) w * xscale; float newy = (float) h * xscale; // use the same scale for both // dimensions // if you want it centered on the display (black borders) mBitmap = Bitmap.createScaledBitmap(mBitmap, this.getWIDth(), this.getHeight(), true); // mCanvas = new Canvas(mBitmap); } @OverrIDe protected voID onDraw(Canvas canvas) { canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); for (PathPoints p : paths) { mPaint.setcolor(p.getcolor()); Log.v("", "color code : " + p.getcolor()); if (p.isTextToDraw()) { canvas.drawText(p.textToDraw, p.x, p.y, mPaint); } else { canvas.drawPath(p.getPath(), mPaint); } } } private float mX, mY; private static final float touch_TolERANCE = 0; private voID touch_start(float x, float y) { mPath.reset(); mPath.moveto(x, y); mX = x; mY = y; } private voID touch_move(float x, float y) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= touch_TolERANCE || dy >= touch_TolERANCE) { mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2); mX = x; mY = y; } } private voID touch_up() { mPath.lineto(mX, mY); // commit the path to our offscreen mCanvas.drawPath(mPath, mPaint); // kill this so we don't double draw mPath = new Path(); paths.add(new PathPoints(mPath, color, false)); } @OverrIDe public boolean ontouch(VIEw arg0, MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: touch_start(x, y); invalIDate(); break; case MotionEvent.ACTION_MOVE: touch_move(x, y); invalIDate(); break; case MotionEvent.ACTION_UP: touch_up(); invalIDate(); break; } return true; } public voID onClickUndo() { if (paths.size() > 0) { undonePaths.add(paths.remove(paths.size() - 1)); invalIDate(); } else { } // toast the user } public voID onClickRedo() { if (undonePaths.size() > 0) { paths.add(undonePaths.remove(undonePaths.size() - 1)); invalIDate(); } else { } } class PathPoints { private Path path; // private Paint mPaint; private int color; private String textToDraw; private boolean isTextToDraw; private int x, y; public PathPoints(Path path, int color, boolean isTextToDraw) { this.path = path; this.color = color; this.isTextToDraw = isTextToDraw; } public PathPoints(int color, String textToDraw, boolean isTextToDraw, int x, int y) { this.color = color; this.textToDraw = textToDraw; this.isTextToDraw = isTextToDraw; this.x = x; this.y = y; } public Path getPath() { return path; } public voID setPath(Path path) { this.path = path; } public int getcolor() { return color; } public voID setcolor(int color) { this.color = color; } public String getTextToDraw() { return textToDraw; } public voID setTextToDraw(String textToDraw) { this.textToDraw = textToDraw; } public boolean isTextToDraw() { return isTextToDraw; } public voID setTextToDraw(boolean isTextToDraw) { this.isTextToDraw = isTextToDraw; } public int getX() { return x; } public voID setX(int x) { this.x = x; } public int getY() { return y; } public voID setY(int y) { this.y = y; } } public int getcolor() { return color; } public voID clear() { invalIDate(); } public voID setBrushSize(float size) { mPaint.setstrokeWIDth(size); } public float getBrushSize() { return mPaint.getstrokeWIDth(); }}我的XML布局:
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/signImageParent" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="@androID:color/white" androID:orIEntation="vertical" > <com.boenka.mk.DrawingPanel androID:ID="@+ID/signaturevIEw" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" /> <linearLayout androID:gravity="center_vertical" androID:paddingtop="10dp" androID:paddingBottom="10dp" androID:layout_alignParentleft="true" androID:ID="@+ID/control_panel" androID:layout_wIDth="50dp" androID:background="#00AEEC" androID:layout_height="fill_parent" androID:orIEntation="vertical" > <button androID:layout_gravity="center_horizontal" androID:ID="@+ID/colorPicker" androID:background="@drawable/color_picker" androID:layout_wIDth="40dp" androID:layout_margin="5dp" androID:layout_height="40dp" /> <button androID:layout_gravity="center_horizontal" androID:ID="@+ID/save_img" androID:layout_margin="5dp" androID:background="@drawable/save_as" androID:layout_wIDth="40dp" androID:layout_height="40dp" /> <button androID:layout_gravity="center_horizontal" androID:ID="@+ID/brush_size" androID:layout_margin="5dp" androID:background="@drawable/brush_size" androID:layout_wIDth="40dp" androID:layout_height="40dp" /> <button androID:layout_gravity="center_horizontal" androID:ID="@+ID/settings" androID:layout_margin="5dp" androID:background="@drawable/setting" androID:layout_wIDth="40dp" androID:layout_height="40dp" /> <button androID:layout_gravity="center_horizontal" androID:ID="@+ID/prevIoUs" androID:layout_margin="5dp" androID:background="@drawable/prevIoUs" androID:layout_wIDth="40dp" androID:layout_height="40dp" /> </linearLayout> <ImageVIEw androID:ID="@+ID/imageVIEw1" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:layout_toRightOf="@+ID/control_panel" /></relativeLayout>解决方法:
从发布的Logcat输出:
Caused by: androID.vIEw.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel........Caused by: java.lang.classNotFoundException: com.boenka.mk.DrawPanel您似乎在xml布局文件中意外拼错了自定义视图的名称:
<com.boenka.mk.DrawPanel androID:ID="@+ID/signaturevIEw" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" />看看将com.boenka.mk.DrawPanel更改为com.boenka.mk.DrawingPanel是否可以解决问题.
总结以上是内存溢出为你收集整理的Android View inflateException全部内容,希望文章能够帮你解决Android View inflateException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)