在自定义的View中绘制内容

AI助手已提取文章相关产品:

程序开发中,常常需要完成某一个特殊效果而绘制一些内容。

下面简单说明如何在View中绘制简单内容并显示出来。

在自定义的View中绘制内容,主要是在onDraw方法中添加绘图操作。如果Paint可以共享,不妨把它放到类变量里面去,具体参考如下:

public class MyView extends View {

	private Paint mPaint;
	
	private void initial() {
		mPaint = new Paint();  
		mPaint.setAntiAlias(true);
        this.setKeepScreenOn(true);
        mPaint.setColor(Color.RED);  
	}
	
	public MyView(Context context) {
		super(context);
		initial();
	}
	
	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
		initial();
	}
	
	@Override
	protected void onDraw(Canvas canvas) {	
		super.onDraw(canvas);
		
		canvas.drawColor(Color.WHITE);
		canvas.drawText("绘制文字", 10, 20, mPaint);
		canvas.drawCircle(35, 50, 20, mPaint);
			
	}

}

说明:

  1. 抗锯齿设置:mPaint.setAntiAlias(true);
  2. 设置画笔颜色:mPaint.setColor(Color.RED);
  3. 绘制背景颜色:canvas.drawColor(Color.WHITE);
  4. 绘制文字:canvas.drawText("绘制文字", 10, 20, mPaint);
  5. 绘制圆:canvas.drawCircle(35, 50, 20, mPaint);

开发文档对参数的讲解比较详细,在此不赘述!

 

下面看看如何显示到界面上,分别从代码和XML文件两个方面简单说明。

1、代码引用

 

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		setContentView(new MyView(this));
		
	}

}
 为了更好的看到坐标的相对关系,这里通过代码设置了全屏和无标题栏(也可以从Manifest文件中设置):

 

  1. 全屏:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  2. 无标题栏:requestWindowFeature(Window.FEATURE_NO_TITLE);

2、XML文件引用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.test.MyView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

  说明:

  1. 注意MyView中构造函数的声明,从XML文件指定的View,需要实现含有AttributeSet参数的构造函数,否则会提示错误;

效果如图:



希望对你有所帮助!:)

您可能感兴趣的与本文相关内容

自定义View绘制阴影效果,可以通过几种不同的方法来实现。以下是一些常见的方法: 1. **使用Elevation属性**: - 如果你的自定义View继承自`View`或其子类(如`Button`, `TextView`等),你可以直接在XML布局文件中或者在代码中使用`setElevation()`方法来设置视图的阴影效果。例如: ```java myView.setElevation(10); // 设置阴影高度为10dp ``` - 这种方法简单易用,但只适用于API级别21及以上的版本。 2. **使用OutlineProvider**: - 对于更复杂的形状和阴影需求,可以实现`OutlineProvider`接口,并在`getOutline()`方法中自定义阴影的形状和大小。例如: ```java public class CustomView extends View implements OutlineProvider { @Override public void getOutline(Outline outline) { // 在这里定义你的阴影逻辑 } } ``` - 这种方法提供了更高的灵活性,可以精确控制阴影的形状和行为。 3. **手动绘制阴影**: - 如果需要更细粒度的控制,可以在自定义View的`onDraw()`方法中使用Canvas来手动绘制阴影。这通常涉及到使用`Paint`对象设置阴影的颜色、偏移和模糊半径等属性,然后绘制到Canvas上。 ```java @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setShadowLayer(10, 5, 5, Color.BLACK); // 设置阴影参数 canvas.drawRect(...); // 绘制带有阴影的矩形 } ``` - 这种方法最为复杂,但也最为强大,允许开发者完全自定义阴影的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值