a. Tạo new project HelloAutoComplete
b. Tạo xml file với tên list_item.xml được lưu trong /res/layout/ với nội dung:
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
android:textColor="#000">
25 trang |
Chia sẻ: tieuaka001 | Lượt xem: 593 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Lập trình di động - Lab06: GridView abd Other Control, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
}
d. Override onPrepareDialog(int) trong Activity và thêm đoạn code
với nội dung sau
switch(id) {
case PROGRESS_DIALOG:
progressDialog.setProgress(0);
progressThread = new ProgressThread(handler);
progressThread.start();
}
e. Tạo Thread trong Activity với nội dung sau
private class ProgressThread extends Thread {
Handler mHandler;
final static int STATE_DONE = 0;
final static int STATE_RUNNING = 1;
int mState;
int total;
ProgressThread(Handler h) {
mHandler = h;
}
public void run() {
mState = STATE_RUNNING;
total = 0;
while (mState == STATE_RUNNING) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Log.e("ERROR", "Thread Interrupted");
}
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 19
Message msg = mHandler.obtainMessage();
msg.arg1 = total;
mHandler.sendMessage(msg);
total++;
}
}
/* sets the current state for the thread,
* used to stop the thread */
public void setState(int state) {
mState = state;
}
}
f. Tạo Handle trong Activity
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
int total = msg.arg1;
progressDialog.setProgress(total);
if (total >= 100){
dismissDialog(PROGRESS_DIALOG);
progressThread.setState(ProgressThread.STATE_DONE);
}
}
};
g. Trong layout.xml thêm button
<Button android:text="Start" android:id="@+id/progressDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
h. Trong onCreate() thêm vào đoạn code
button = (Button) findViewById(R.id.progressDialog);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
showDialog(PROGRESS_DIALOG);
}
});
i. Run ứng dụng
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 20
2.9 Làm việc với Custom View sử dụng touch sự kiện
a. Tạo new project
b. Thay đổi main.layout xml với nội dung
<LinearLayout
xmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Drag the droid around" />
<FrameLayout
android:id="@+id/graphics_holder"
android:layout_height="match_parent"
android:layout_width="match_parent">
c. Tạo biến string trong Activity với tên
private static final String DEBUG_TAG = "GestureFunActivity";
d. Tạo mới class với tên PlayAreaView extends View
e. Định nghĩa biến trong lớp này
private GestureDetector gestures;
private Matrix translate;
private Bitmap droid;
f. Trong contructor() bổ sung thêm đoạn code
translate = new Matrix();
gestures = new GestureDetector(GestureFunActivity.this, new GestureListener(this));
droid = BitmapFactory.decodeResource(getResources(), R.drawable.droid_g);
g. Override phương thức onDraw() , thêm đoạn code
canvas.drawBitmap(droid, translate, null);
Matrix m = canvas.getMatrix();
Log.d(DEBUG_TAG, "Matrix: " + translate.toShortString());
Log.d(DEBUG_TAG, "Canvas: " + m.toShortString());
h. Override phương thức onTouchEvent() , thêm đoạn code
return gestures.onTouchEvent(event);
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 21
i. Định nghĩa 2 phương thức trong class với nội dung
public void onMove(float dx, float dy) {
translate.postTranslate(dx, dy);
invalidate();
}
public void onResetLocation() {
translate.reset();
invalidate();
}
j. Tạo mới class với tên GestureListener implements
GestureDetector.OnGestureListener,GestureDetector.OnDoubleTap
Listener
k. Định nghĩa đối tượng trong class
PlayAreaView view;
l. Trong Contructor() của class thêm vào dòng code
this.view = view;
m. Thêm đoạn code
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.v(DEBUG_TAG, "onDoubleTap");
view.onResetLocation();
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
//Log.v(DEBUG_TAG, "onScroll");
view.onMove(-distanceX, -distanceY);
return true;
}
n. Chạy ứng dụng
2.10 Làm việc với Custom Layout
a. Tạo new project
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 22
b. Tạo new class extends LinearLayout
c. Định nghĩa biến trong class
private Paint innerPaint, borderPaint ;
d. Trong contructor() gọi init()
e. Định nghĩa hàm init() trong class với nội dung
private void init() {
innerPaint = new Paint();
innerPaint.setARGB(225, 75, 75, 75); //gray
innerPaint.setAntiAlias(true);
borderPaint = new Paint();
borderPaint.setARGB(255, 255, 255, 255);
borderPaint.setAntiAlias(true);
borderPaint.setStyle(Style.STROKE);
borderPaint.setStrokeWidth(2);
}
f. Override phương thức dispatchDraw() với nội dung
@Override
protected void dispatchDraw(Canvas canvas) {
RectF drawRect = new RectF();
drawRect.set(0,0, getMeasuredWidth(), getMeasuredHeight());
canvas.drawRoundRect(drawRect, 5, 5, innerPaint);
canvas.drawRoundRect(drawRect, 5, 5, borderPaint);
super.dispatchDraw(canvas);
}
g. Thay đổi trong layout main.xml với nội dung
<FrameLayout xmlns:android=""
android:id="@+id/home_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/city_map_view"
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 23
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="0DUEIIn35xtmfWC2DXprK5kqNF-
aEaNgRJ4ONxw"/>
<LinearLayout
xmlns:android=""
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="bottom"
android:paddingLeft="5px"
android:paddingTop="5px"
android:paddingRight="5px">
<com.pocketjourney.view.TransparentPanel
android:id="@+id/transparent_panel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5px"
android:paddingLeft="5px"
android:paddingBottom="5px"
android:paddingRight="5px">
<Button android:id="@+id/button_click_me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me!"/>
h. Thay đổi Activity thành MapActivity, thêm đoạn code trong
onCreate()
Button button = (Button) findViewById(R.id.button_click_me);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(Tutorial1.this, "Button
Clicked",Toast.LENGTH_SHORT).show();
}});
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 24
i. Thực hiện quá trình build như trong Lab MapView
j. Cài đặt và chạy ứng dụng
2.11 Làm việc với ViewFliper
a. Tạo new project
b. Thay đổi layout main.xml với nội dung
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android=""
android:orientation="vertical">
<LinearLayout android:id="@+id/LinearLayout03"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next">
<Button android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Previous">
<LinearLayout android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ViewFlipper android:id="@+id/ViewFlipper01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Flipper Content 1">
<TextView android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Flipper Content 2">
<TextView android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Flipper Content 3">
Ver 1.0 – 2016, FIT - HCMUP Lab 06: GridView abd Other Control
Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 25
c. Trong Activity implement sự kiện onClickListener và định nghĩa biến
Button next;
Button previous;
ViewFlipper vf;
d. Thêm đoạn code trong onCreate() của Activity
vf = (ViewFlipper) findViewById(R.id.ViewFlipper01);
next = (Button) findViewById(R.id.Button01);
previous = (Button) findViewById(R.id.Button02);
next.setOnClickListener(this);
previous.setOnClickListener(this);
e. Override phương thức onClick() và thêm đoạn code
if (v == next) {
vf.showNext();
}
if (v == previous) {
vf.showPrevious();
}
f. Chạy ứng dụng
Các file đính kèm theo tài liệu này:
- mad_lab06_gridview_5878.pdf