Android: setContentView для страницы рисования
Привет, я учусь делать приложение для рисования, где пользователи могут рисовать линии на картинке. Я следовал учебнику по отпечаткам пальцев в Интернете, и onCreate
часть выглядит следующим образом:
public class ColoringPageActivity2 extends FragmentActivity implements ColorPickerDialog.OnColorChangedListener
{
private Paint mPaint;
private MaskFilter mEmboss;
private MaskFilter mBlur;
MyView mv;
AlertDialog dialog;
ActionBar actionBar;
Dialog dialog_draw;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.coloring_activity2);
mv = (MyView) findViewById(R.id.drawerView); //replaced setContentView(mv);
mv.setDrawingCacheEnabled(true);
mv.setBackgroundResource(R.drawable.ic_stub);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xFFFF0000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(20);
}
Продолжить в том же классе: ColoringPageActivity2
public class MyView extends View
{
private static final float MINP = 0.25f;
private static final float MAXP = 0.75f;
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
private Paint mBitmapPaint;
Context context;
public MyView(Context c)
{
super(c);
context = c;
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
....
coloring_activity.xml:
<RelativeLayout
android:id="@+id/drawing_panel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/layout_tool"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<ImageView
android:id="@+id/image_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/ic_stub" />
<com.abc.abc.activity.ColoringPageActivity2.MyView
android:id="@+id/drawerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@android:color/transparent" />
</RelativeLayout>
Logcat:
10-21 00:15:37.685: E/AndroidRuntime(24558): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.abc.abc.activity.ColoringPageActivity2.MyView" on path: /data/app/com.abc.abc-2.apk
10-21 00:15:37.685: E/AndroidRuntime(24558): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64)
10-21 00:15:37.685: E/AndroidRuntime(24558): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-21 00:15:37.685: E/AndroidRuntime(24558): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-21 00:15:37.685: E/AndroidRuntime(24558): at android.view.LayoutInflater.createView(LayoutInflater.java:565)
10-21 00:15:37.685: E/AndroidRuntime(24558): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
10-21 00:15:37.685: E/AndroidRuntime(24558): ... 23 more
Вопрос:
следуя примеру отпечатка пальца, изначально это было setContentView(mv)
а также mv = new MyView(this);
, которая была полноэкранной картиной. Вместо этого я хотел бы добавить несколько кнопок внизу, поэтому я разработал персонализированный XML и соответствовал MyView
в XML.
Нажатие <com.abc.abc.activity.ColoringPageActivity2.MyView
может напрямую перейти к MyView
в классе ColoringActivity2`.
Тем не менее, вышеупомянутый logcat появляется при запуске ColoringPageActivity2.
Как это можно решить?
Спасибо!
1 ответ
Если вы положите MyView
Класс в отдельном классе, это будет работать. Просто как Button
или TextView
это отдельные классы, это будет работать наверняка, если ваш CustomView
это отдельный класс. И в другой легко позвонить Activity
если тебе это нужно