此刻打盹,你将做梦;而此刻学习,你将圆梦。
今天我们来学习如何重绘View!
所谓的重绘就是重新绘制他的外观(样式),既然要重新绘制,那么首先需要继承 View 类。
extends View
首先,新建一个android项目,我们定义一个类,并继承 View,类名叫:DrawView:
public class DrawView extends View {
public DrawView(Context context) {
super(context);
}
}
继承View类以后,我们需要找到View里面用来绘制的函数,仔细找你会找到一个 onDraw(Canvas canvas) 函数,没错这个函数就是用来绘制View外观的函数!
接下来我们重写 onDraw(Canvas canvas) 这个函数:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
函数里面有一个类:
Canvas
这个类就是用来绘制的,但是仅凭 Canvas 这一个类还不够,我们还需要另一个类:
Paint
通常,我们把Canvas这个类比作 ‘画纸’;把Paint这个类比作 ‘画笔’
这两个类一起合作,就可以绘制图形了。
知道怎么绘制以后,我们来进行实践操作:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint=new Paint();
paint.setAntiAlias(true);//设置抗锯齿
paint.setColor(Color.YELLOW);//设置画笔的颜色
paint.setStrokeWidth(10);//设置画笔的粗细
paint.setStyle(Paint.Style.FILL);//设置样式(FILL为填充内部颜色,STROKE为只描边不填充)
/**
* 画笔选择(设置)好后,我们就可以在纸上(Canvase)画画了
* 本次实例绘制一个 圆形*/
canvas.drawCircle(300,300,200,paint);
/**.drawCircle()为绘制一个圆形
第一个参数为 x 坐标,第二个参数为 y 坐标,第三个为 半径 的大小,,第四个就是把我们设置好的 paint
*/
}
这样一个简单的重绘View就完成了,接下来就是把他显示出来,在activity_main.xml里面添加一个FrameLayout布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
</LinearLayout>
在Mainactivity.java 里面应用我们刚才重绘的View:
public class MainActivity extends AppCompatActivity {
private FrameLayout frameLayout;//定义一个FrameLayout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
frameLayout = (FrameLayout) findViewById(R.id.framelayout);//初始化 framelayout
frameLayout.addView(new DrawView(this));//在这里,使用frameLayout的addView函数,把我们刚才重绘的View组件添加进去
}
}
然后运行程序,如图,我们就创建了一个直径400dp,半径200dp的黄色大圆: