[polldaddy poll=9764234]
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:
Tô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à:
[code language=”xml”]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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>
</LinearLayout>
[/code]
Source xử lý:
[code language=”java”]
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();
}
}
[/code]
– Câu 1 – đề 2:
Xml Layout:
[code language=”xml”]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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>
</LinearLayout>
[/code]
Xử lý source code:
[code language=”java”]
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();
}
}
[/code]
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