Bạn
muốn một đoạn chữ nào đó cong, như sau.
Ta phải thêm một class vào trong class hiện tại để dùng Canvas vẽ nó ra.
Trong file xml ta thêm một LinearLayout rỗng vào vị trí bạn muốn có chữ cong.
<LinearLayout
android:id="@+id/l2"
android:layout_width="300dp"
android:layout_height="300dp"
android:orientation="vertical" >
</LinearLayout>
Khai báo một biến LinearLayout lên trên dòng Override của class chính LinearLayout v;
Tiếp theo tham chiếu địa chỉ, nhét class vẽ chữ cong vào.
v = (LinearLayout) findViewById(R.id.l2);
v.addView(new vechu( this));
Lỗi đỏ chỗ vechu kệ nó, ta tạo class vechu ngay bây giờ.
Copy đoạn sau xuống trên cái ngoặc đóng cuối cùng.
@SuppressLint("DrawAllocation")
public class vechu extends View {
private Paint paint,paint2;
public vechu(Context context){
super(context);
paint=new Paint();
paint.setColor(Color.RED);
paint.setTextSize(30);
paint2=new Paint();
paint2.setColor(Color.RED);
paint2.setStyle(Style.STROKE);
paint2.setAntiAlias(true);
}
@Override
protected void onDraw(final Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Path path = new Path();
path.addArc(new RectF(100, 50, 320, 250), 220, 190);
canvas.drawTextOnPath("Đây là chữ cong", path, 0, 0, paint);
//canvas.drawCircle(210, 180, 90, paint2);
}
}
Bây giờ chạy ra bạn đã thấy chữ cong như ý. Để điều chỉnh độ cong, hãy sửa chữ 250 trong dòng path.addArc(new RectF(100, 50, 320, 250), 220, 190);
Giả
sử ta muốn thêm một vòng tròn ở dưới, ta bỏ comment dòng canvas.drawCircle(210,
180, 90, paint2);đi là được.
Nếu
muốn vòng tròn toàn bộ được tô màu, bạn rào dòng paint2.setStyle(Style.STROKE);
lại thành
comment là được.
Bây
giờ hãy nhìn dòng public vechu(Context context){
Bạn
thấy nó có tên giống class vechu,đó gọi là phương thức khởi tạo trong class này. Nó có tên trùng với
class, trong đó ta đã khởi tạo 2 biến paint, paint2.
Cứ
dùng đoạn code này một lần bạn sẽ biết phương thức khởi tạo là như vậy. Class lồng
nhau cũng là thế đó. Ta đã cho một class mới vào trong class hiện tại rồi đó.
No comments:
Post a Comment