Dưới đây là đáp án mẫu cho 2 đề thi cuối kỳ Android của lớp 13DTH1LT2

Đề 1:LTDiDong_12DTH1LT3_DeThiCuoiKy_2013_MD001

Đề 2:LTDiDong_12DTH1LT3_DeThiCuoiKy_2013_MD002

Ở đây Tôi chỉ giải câu 1 của các đề trên, câu 2 Sqlite các bạn tự làm vì nó rất dễ, các bài tập trước đó đều đã làm qua.

Câu 1 – đề 1:

s1Tôi sẽ xử lý lệnh vẽ Button và căn lề Button theo vị trí xuất hiện (tính từ vị trí 0)

– XML Layout cho câu hỏi này là:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/LinearLayout1"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".MainActivity" >
<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content" >
<Button
 android:id="@+id/btnDrawButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Draw Button:" />
<EditText
 android:id="@+id/editNumber"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:ems="10" />
</LinearLayout>
<ScrollView
 android:id="@+id/scrollView1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content" >
<LinearLayout
 android:id="@+id/layout_draw_button"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
</LinearLayout>
 </ScrollView>
&nbsp;
</LinearLayout>

Source xử lý:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package tranduythanh.com;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.app.Activity;
import android.graphics.Point;
import android.view.Display;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
public class MainActivity extends Activity {
Handler handlerMain;
 AtomicBoolean atomic=null;
 LinearLayout layoutdevebutton;
 Button btnOk;
 EditText edtOk;
 int sizehalf=0;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 //lấy LinearLayout chứa Button ra
 layoutdevebutton=(LinearLayout) findViewById(R.id.layout_draw_button);
 final Random rd=new Random();
 btnOk=(Button) findViewById(R.id.btnDrawButton);
 edtOk=(EditText) findViewById(R.id.editNumber);
 handlerMain=new Handler()
 {
 @Override
 public void handleMessage(Message msg) {
 // TODO Auto-generated method stub
 super.handleMessage(msg);
 //Nhận nhãn của Button được gửi về từ tiến trình con
 int v=rd.nextInt(100);
 String nhan_button=v+"";
 //khởi tạo 1 Button
 Button b=new Button(MainActivity.this);
 //thiết lập nhãn cho Button
 b.setText(nhan_button);
 //thiết lập kiểu Layout : Width, Height
 LayoutParams params=new
 LayoutParams(LayoutParams.WRAP_CONTENT,
 LayoutParams.WRAP_CONTENT);
 if(msg.arg1%2==0)
 params.gravity=Gravity.LEFT;
 else
 params.gravity=Gravity.RIGHT;
 //thiết lập layout cho Button
 b.setWidth(sizehalf);
 b.setLayoutParams(params);
 //đưa Button vào layoutdevebutton
 layoutdevebutton.addView(b);
 }
 };
 btnOk.setOnClickListener(new OnClickListener() {
@Override
 public void onClick(View arg0) {
 // TODO Auto-generated method stub
 doStart();
 }
 });
 }
 @Override
 protected void onResume() {
 // TODO Auto-generated method stub
 super.onResume();
 //lấy màn hình điện thoại đang sử dụng
 Display display = getWindowManager().getDefaultDisplay();
 Point size = new Point();
 display.getSize(size);
 sizehalf=size.x/2;
 }
 private void doStart()
 {
 layoutdevebutton.removeAllViews();
 atomic=new AtomicBoolean(false);
 final int sobutton=Integer.parseInt(edtOk.getText()+"");
 Thread thCon=new Thread(new Runnable() {
 @Override
 public void run() {
 // TODO Auto-generated method stub
 for(int i=0;i<sobutton && atomic.get();i++)
 {
 //nghỉ 200 mili second
 SystemClock.sleep(200);
 //lấy message từ Main Thread
 Message msg=handlerMain.obtainMessage();
 //gán dữ liệu cho msg Mainthread, lưu vào biến obj
 //chú ý ta có thể lưu bất kỳ kiểu dữ liệu nào vào obj
 msg.arg1=i;
 //gửi trả lại message cho Mainthread
 handlerMain.sendMessage(msg);
 }
 }
 });
 atomic.set(true);
 //thực thi tiến trình
 thCon.start();
 }
}

– Câu 1 – đề 2:

s3

 

Xml Layout:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/LinearLayout1"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".MainActivity" >
<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content" >
<Button
 android:id="@+id/btnDrawButton"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Draw View:" />
<EditText
 android:id="@+id/editNumber"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 android:ems="10" />
</LinearLayout>
<ScrollView
 android:id="@+id/scrollView1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content" >
<LinearLayout
 android:id="@+id/layout_draw_button"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
</LinearLayout>
 </ScrollView>
&nbsp;
</LinearLayout>

Xử lý source code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package tranduythanh.com;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.app.Activity;
import android.graphics.Point;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity {
Handler handlerMain;
 AtomicBoolean atomic=null;
 LinearLayout layoutdevebutton;
 Button btnOk;
 EditText edtOk;
 int sizehalf=0;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 //lấy LinearLayout chứa Button ra
 layoutdevebutton=(LinearLayout) findViewById(R.id.layout_draw_button);
 final Random rd=new Random();
 btnOk=(Button) findViewById(R.id.btnDrawButton);
 edtOk=(EditText) findViewById(R.id.editNumber);
 handlerMain=new Handler()
 {
 @Override
 public void handleMessage(Message msg) {
 // TODO Auto-generated method stub
 super.handleMessage(msg);
 //Nhận nhãn của Button được gửi về từ tiến trình con
 int v=rd.nextInt(100);
 String nhan_button=v+"";
 //khởi tạo 1 Button
 View vv=null;
 if(msg.arg1%2==0)
 {
 vv=new Button(MainActivity.this);
 ((Button) vv).setText(nhan_button);
 }
 else
 {
 vv=new EditText(MainActivity.this);
 ((EditText) vv).setText(nhan_button);
 }
 LayoutParams params=new
 LayoutParams(LayoutParams.MATCH_PARENT,
 LayoutParams.WRAP_CONTENT);
 vv.setLayoutParams(params);
 //đưa Button vào layoutdevebutton
 layoutdevebutton.addView(vv);
 }
 };
 btnOk.setOnClickListener(new OnClickListener() {
@Override
 public void onClick(View arg0) {
 // TODO Auto-generated method stub
 doStart();
 }
 });
 }
 @Override
 protected void onResume() {
 // TODO Auto-generated method stub
 super.onResume();
 Display display = getWindowManager().getDefaultDisplay();
 Point size = new Point();
 display.getSize(size);
 sizehalf=size.x/2;
 }
 private boolean isPrime(int n)
 {
 if(n<2)return false;
 for(int i=2;i<=Math.sqrt(n);i++)
 if(n%i==0)return false;
 return true;
 }
 private void doStart()
 {
 layoutdevebutton.removeAllViews();
 atomic=new AtomicBoolean(false);
 final int sobutton=Integer.parseInt(edtOk.getText()+"");
 Thread thCon=new Thread(new Runnable() {
 @Override
 public void run() {
 // TODO Auto-generated method stub
 for(int i=0;i<sobutton && atomic.get();i++)
 {
 //nghỉ 200 mili second
 SystemClock.sleep(200);
 //lấy message từ Main Thread
 Message msg=handlerMain.obtainMessage();
 //gán dữ liệu cho msg Mainthread, lưu vào biến obj
 //chú ý ta có thể lưu bất kỳ kiểu dữ liệu nào vào obj
 msg.arg1=i;
 //gửi trả lại message cho Mainthread
 handlerMain.sendMessage(msg);
 }
 }
 });
 atomic.set(true);
 //thực thi tiến trình
 thCon.start();
 }
}

Các bạn có thể tải đáp án mẫu tại đây:

Đáp án mẫu câu 1 đề 1: https://www.mediafire.com/download/ob6mc2webu37usb/ThiCuoiKy_De1_Cau1.rar

Đáp án mẫu câu 1 đề 2: http://www.mediafire.com/download/w3rn3thi7bqh1gk/ThiCuoiKy_De2_Cau1.rar

Nguồn: http://duythanhcse.wordpress.com/category/l%E1%BA%ADp-trinh-android/