Wednesday, October 4, 2017

Làm chữ cong, vẽ vòng tròn trong Android

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