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à:
<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>
Source xử lý:
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:
Xml Layout:
<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>
Xử lý source code:
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
[…] ps: Đán án mẫu cho câu 1 sinh viên xem ở đây https://duythanhcse.wordpress.com/2013/11/23/bai-42-dap-an-mau-de-thi-cuoi-ky-android/ […]
thank thay
câu 2 mới quan trọng sao k cho đáp án câu 2 thầy ơi