Để làm cho bức vẽ thêm sinh động ta có thể dùng chức năng này để tải lên bức vẽ những hình ảnh có sẵn. Khi nhấn vào nút tương ứng với chức năng này màn hình sẽ hiển thị lên 1 dialog , trên dialog này sẽ có rất nhiều hình để ta lựa chọn, mỗi hình là một ImageButton . Để thay đổi kích thước hình tải lên lớn hơn, trước khi chọn hình ta nhớ điều chỉnh seekbar bên dưới. Dialog này sẽ được xây dựng trong lớp PicDialog. Cũng như các chức năng trước , trong lớp này ta xây dựng một phương thức để hiển thị dialog và thực hiện lựa chọn các hình. Bố cục các nút trên dialog này được định nghĩa trong file pic_dialog.xml. Việc tải hình lên được thực hiện khi ta chạm tay vào màn hình vì thế việc tải hình này lên sẽ được thực hiện trong phương thức touch_start() của lớp MyView. Vì có rất nhiều hình nên ta cần khai báo một biến để xác định hình nào được chọn, và một phương thức để thay đổi giá trị này.
public class MyView extends View {
int pic_number;//mỗi ảnh ứng với một giá trị của biến này
public void setPicNumber(int n) {
pic_number = n; // thay đổi giá trị này để vẽ ảnh tương ứng }
}
Trong phương thức touch_strart() của lớp MyView:
private void touch_start(float x, float y) { switch (pic_number) {
case 1:
//giải mã các hình ảnh vào đối tượng bitmap brush_bit =
BitmapFactory.decodeResource(getResources(), R.drawable.pic_flower);
break; case 2:
brush_bit =
BitmapFactory.decodeResource(getResources(), R.drawable.pic_heart);
break;
// … các lựa chọn khác }
// điều chỉnh kích thước của brush_bit
alter = Bitmap.createScaledBitmap(brush_bit, 70+pic_scale, 70+pic_scale, true);
//thuc hien ve len bitmap
mcanvas.drawBitmap(alter, x-((70+pic_scale)/2), y- ((70+pic_scale)/2), null);
}
Trong lớp PicDialog, xây dựng phương thức choosePic() để hiển thị dialog và lựa chọn hình ảnh :
public class PicDialog { //… các khai báo cần thiết
public void choosePic(final MyView mv) {
final Dialog da = new Dialog(context); da.setContentView(R.layout.pic_dialog); da.setTitle("Picture");
…
OnClickListener listen = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_flower:
mv.setPicNumber(1);//ứng với mỗi giá trị là một hình vẽ khác nhau
da.dismiss();
break;
case R.id.bt_heart:
mv.setPicNumber(2); da.dismiss(); break; // … các lựa chọn còn lại } }; //… da.show(); } }
Trong lớp BabyPaintActivity, ta xây dựng một phương thức để thực hiện hiển thị dialog lên màn hình khi nhấn vào nút chức năng tương ứng:
{
da_pic.choosePic(mview); }
Gọi lại phương thức trên thông qua thuộc tính android:onClick của nút
tương ứng trong file activity_baby_paint_main.xml
<ImageButton android:id="@+id/bt_pic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/bt_baby" android:onClick="Picture"/>
Khi chọn chức năng này màn hình hiển thị như sau:
KẾT LUẬN VÀ ĐỀ NGHỊ