원을 그리면서 커브를 만드는 커스텀 뷰를 만들었습니다. 내 목표는 내 XML보기를 표시하는 것입니다. 내 XML에서 사용자 지정보기 클래스를 부 풀려고 노력하고 있지만 그것은 내게 오류를주고있다. 내 목표는 framelayout 내 mainactivity에서 그것을 보여줍니다. 나는 내 코드와 오류 보고서를 올리고있다. 좀 봐주세요. 그리고 다른 접근법이 있다면 알려주세요. 감사안드로이드에서 팽창하는 커스텀 뷰
public class CusImage extends View {
private Paint myPaint;
private Paint myPaint2;
private Paint myFramePaint;
private RectF bigOval;
public TextView value;
private RectF bigOval2;
private float myStart;
private float mySweep;
private float SWEEP_INC = 3;
private float SWEEP_INC2 = 5;
// Use this flag to control the direction of the arc's movement
private boolean addToCircle = false;
public CusImage(Context context, AttributeSet attrs) {
super(context, attrs);
if (isInEditMode()) {
init();
}
}
private void init() {
myPaint = new Paint();
myPaint.setAntiAlias(true);
myPaint.setStyle(Paint.Style.STROKE);
myPaint.setColor(Color.BLUE);
myPaint.setStrokeWidth(10);
bigOval = new RectF(40, 10, 280, 250);
myFramePaint = new Paint();
myFramePaint.setAntiAlias(true);
myFramePaint.setColor(Color.TRANSPARENT);
}
@Override
protected void onDraw(Canvas canvas) {
// value = (TextView) findViewById(R.id.txt);
canvas.drawRect(bigOval, myFramePaint);
canvas.drawArc(bigOval, myStart, mySweep, false, myPaint);
myStart = -90;
mySweep += SWEEP_INC2;
invalidate();
}
}
이 내 XML에 팽창하려고하는 방법입니다 : 로그 캣
Exception raised during rendering: loader
(instance of com/android/ide/eclipse/adt/internal/resources/
manager/ProjectClassLoader): attempted duplicate class definition for name:
"com/example/progressframework/MainActivity$CusImage"
Exception details are logged in Window > Show View > Error Log
그리고 :
<com.example.progressframework.MainActivity.CusImage
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</com.example.progressframework.MainActivity.CusImage>
을 그리고 아래의 최신 오류가
08-26 12:26:33.702: E/AndroidRuntime(6428): FATAL EXCEPTION: main
08-26 12:26:33.702: E/AndroidRuntime(6428): java.lang.NullPointerException
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.GLES20Canvas.drawRect(GLES20Canvas.java:1136)
08-26 12:26:33.702: E/AndroidRuntime(6428): at com.example.progressframework.CusImage.onDraw(CusImage.java:60)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.draw(View.java:13944)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12838)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12880)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.draw(View.java:13657)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.drawChild(ViewGroup.java:3083)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12833)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12880)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.draw(View.java:13657)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.drawChild(ViewGroup.java:3083)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12833)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12880)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.draw(View.java:13657)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.drawChild(ViewGroup.java:3083)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12833)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12880)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.draw(View.java:13657)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.drawChild(ViewGroup.java:3083)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.draw(View.java:13947)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.widget.FrameLayout.draw(FrameLayout.java:467)
08-26 12:26:33.702: E/AndroidRuntime(6428): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2224)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12838)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.View.getDisplayList(View.java:12880)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1411)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1359)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2367)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2239)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1872)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.Choreographer.doFrame(Choreographer.java:532)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.os.Handler.handleCallback(Handler.java:730)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.os.Handler.dispatchMessage(Handler.java:92)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.os.Looper.loop(Looper.java:137)
08-26 12:26:33.702: E/AndroidRuntime(6428): at android.app.ActivityThread.main(ActivityThread.java:5103)
08-26 12:26:33.702: E/AndroidRuntime(6428): at java.lang.reflect.Method.invokeNative(Native Method)
08-26 12:26:33.702: E/AndroidRuntime(6428): at java.lang.reflect.Method.invoke(Method.java:525)
08-26 12:26:33.702: E/AndroidRuntime(6428): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-26 12:26:33.702: E/AndroidRuntime(6428): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-26 12:26:33.702: E/AndroidRuntime(6428): at dalvik.system.NativeStart.main(Native Method)
그 클래스가 com.example.progressframework.MainActivity 패키지에 있는지 확인 했습니까 ?? – Piyush
예 패키지에 들어 있습니다. 사실 MainActivity 클래스 안에이 클래스를 만들었습니다. contentview를 CusImage 클래스로 설정하면 괜찮습니다. 그러나 나는이 견해를 XML로 원한다. – Vyshakh
cusImage에 대해 별도의 클래스를 만들면 gud가됩니다. 따라서 mainActivity를 무시하고 com.example.progressframework.cusImaage에 의해 사용됩니다. –