如题
不知道怎么在XML中引用自定义的VIEW,VIEW该怎么写呢?自定义的VIEW中应该注意什么?
XML引用自定义VIEW应该注意什么?
请高手给点建议,不管复制的或者原创都行啊。我之前一直做web,刚学习Android还是喜欢用XML布局,感觉XML更像CSS+DIV。
不知道各位高手有什么建议没?
不知道怎么在XML中引用自定义的VIEW,VIEW该怎么写呢?自定义的VIEW中应该注意什么?
XML引用自定义VIEW应该注意什么?
请高手给点建议,不管复制的或者原创都行啊。我之前一直做web,刚学习Android还是喜欢用XML布局,感觉XML更像CSS+DIV。
不知道各位高手有什么建议没?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.study.android.myview.MyView
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
自定义Viewpublic class MyView extends View { @Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas); canvas.drawColor(Color.WHITE);
Paint paint = new Paint(); // 反锯齿
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(3); canvas.drawCircle(40, 40, 30, paint);
canvas.drawRect(10, 80, 70, 140, paint);
canvas.drawRect(10, 150, 70, 190, paint);
RectF rectF = new RectF(10, 200, 70, 230);
canvas.drawRoundRect(rectF, 15, 15, paint); // 圆角矩形
rectF = new RectF(10, 240, 70, 270);
canvas.drawOval(rectF, paint);
// 定义一个Path对象,封闭为三角形
Path path = new Path();
path.moveTo(10, 340);
path.lineTo(70, 340);
path.lineTo(40, 290);
path.close();
canvas.drawPath(path, paint); path = new Path();
path.moveTo(26, 360);
path.lineTo(54, 360);
path.lineTo(70, 392);
path.lineTo(40, 420);
path.lineTo(10, 392);
path.close();
canvas.drawPath(path, paint); // ------------------------------
// 设置渐变器
Shader mShander = new LinearGradient(0, 0, 40, 60, new int[] {
Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }, null,
Shader.TileMode.REPEAT);
paint.setStyle(Paint.Style.FILL);
paint.setShader(mShander);
paint.setShadowLayer(45, 10, 10, Color.GRAY); // 设置阴影
canvas.drawCircle(120, 40, 30, paint);
canvas.drawRect(90, 80, 150, 140, paint);
canvas.drawRect(90, 150, 150, 190, paint);
rectF = new RectF(90, 200, 150, 230);
canvas.drawRoundRect(rectF, 15, 15, paint); // 圆角矩形
rectF = new RectF(90, 240, 150, 270);
canvas.drawOval(rectF, paint);
// 定义一个Path对象,封闭为三角形
path = new Path();
path.moveTo(90, 340);
path.lineTo(150, 340);
path.lineTo(120, 290);
path.close();
canvas.drawPath(path, paint); path = new Path();
path.moveTo(106, 360);
path.lineTo(134, 360);
path.lineTo(150, 392);
path.lineTo(120, 420);
path.lineTo(90, 392);
path.close();
canvas.drawPath(path, paint);
} public MyView(Context context) {
super(context);
} public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
难道因为我没添加onDraw方法?
XML: com.study.android.myview.MyView
JAVA: 继承View