2013年9月2日 星期一

[TQC+ Android]題庫、環境設置及eclipse使用技巧

Android JDK 及 eclipse安裝設置參考
http://sofun.tw/android-eclipse/

Android 題目以及題庫掃描檔案連結
https://db.tt/4ylbqp9g

1.寫作技巧記住函數開頭後面只要用點的( . )都能夠做出來,只要變數名稱沒取錯
2.當打出部分函數時,可以使用快捷鍵( alt  +  / )可以選擇完整函數(如doc打指令Tab)
3.如果需要import大量變數可使用快捷鍵(alt + shift + o)
3.對@Override 之上空白 按右鍵Source > Override/Implement Method 有許多實作方法
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
4. new部分可用View. 出 OnClickListener() 在改回Button(不更改也可執行,以防分數被扣)
也可使用new Button.OnClickListener(){} 加上小括號、中括號後實做
 Button b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new Button.OnClickListener()
    {
      public void onClick(View v)
      {

5.當有兩個java黨互動或接收簡訊等action都需要去AndroidManifest.xml設置權限及Action
通常會用到intent時都需要
6.新建專案 四大步驟
第一步驟: src 建立 .java 
第二步驟: 建立 onCreate (第3點) (連結第三步驟 setContentView(R.layout.XXXXX);  layout
第三步驟: layout 建立 .xml檔案
第四步驟: androidMainifest.xml 啟動 action

Android 台灣開發者社群

陳翰瑀‎
分享一下我個人常用的Eclipse快捷鍵

alt + / 程式碼自動補全/提示
alt + shift + z Suround with(ex.try catch block)

tab 縮排
shift + tab 反縮排

ctrl + f 搜尋
ctrl + l 直接跳到輸入的行數
ctrl + a 全選
shift + home 從後往前選一排
shift + end 從前往後選一排

ctrl + x 剪下
ctrl + c 複製
ctrl + v 貼上
ctrl + / mark(備註)/反mark(反備註)
ctrl + s 存檔

ctrl + shift +f 自動排版
ctrl + shift +o 自動import
ctrl + shift +r 尋找並開啟檔案

另外還有範圍較大的 工作區搜尋
ctrl + h 我都使用file search比較多(找所有檔案內相同的字串)

特別設定
http://fahdshariff.blogspot.tw/2011/08/eclipse-default-to-file-search-tab-in.html?m=1

蔡昇哲
ctrl + w, 關單一檔案
ctrl + i, 單行排版
ctrl + alt + s, source (主要常用在override)
ctrl + alt + t, refactor
ctrl + q, 跳到最後修改處
ctrl + [; ctrl + ] 在跳行上很好用

Rick Wu
反白某變數 ctrl+k 逐一尋找該變數
反白某函數/類別/layout 按f3或ctrl按住+滑鼠左鍵 可跳至該函數/類別/xml宣告的地方

[TQC+ Android]接收SMS_302

Android 2.1 API 7 版本原始題目載點:http://db.tt/WiNMXEQ6

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/302.png

GDD03.SMSreceiver - BroadcastReceiver
先在AndroidManifest.xml設定user permission,在設定activity和receive
package COM.TQC.GDD03;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class SMSreceiver extends BroadcastReceiver {
    
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
            Intent mainIntent = new Intent(context, Image.class);
            mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainIntent);
        }
    }
}

[TQC+ Android]公尺與英呎轉換_202

Android 2.1 API 7 版本原始題目載點:http://db.tt/hHVh21bO

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC202.pdf

GDD02.java - Activity主體
因為layout為線性排列所以擺放Button時,需要再選擇relation layout再擺放兩個Button
package COM.TQC.GDD02;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class GDD02 extends Activity implements OnClickListener{
    private TextView result;
    private EditText input_value;
    private Button submit01, submit02;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        result = (TextView) findViewById(R.id.result);
        input_value = (EditText) findViewById(R.id.input_value);
        submit01 = (Button) findViewById(R.id.submit01);
        submit02 = (Button) findViewById(R.id.submit02);
        
        submit01.setOnClickListener(this);
        submit02.setOnClickListener(this);
    }

    public void onClick(View v) {
        String r = input_value.getText().toString();
        
        if (v == submit01)
            r += ".0公尺 = " + String.format("%.2f", Double.parseDouble(r) * 3.28) + "英呎";
        else if (v == submit02)
            r += ".0英呎 = "+ String.format("%.2f", Double.parseDouble(r) * 0.3048) + "公尺";
        
        result.setText(r);
    }
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu_reset:
            resetValue();
            break;
        }
        return true;
    }

    private void resetValue() {
        result.setText("");
        input_value.setText("");
    }
}

[TQC+ Android]動態密碼顯示_110

Android 2.1 API 7 版本原始題目載點:http://db.tt/7DRVeeKb

僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC110.pdf

GDD01.java - Activity主體
package COM.TQC.GDD01;

import android.app.Activity;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;


public class GDD01 extends Activity {
 private EditText et;
 private CheckBox cb;
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    et = (EditText) findViewById(R.id.mPassword);
    cb = (CheckBox) findViewById(R.id.mCheck);
    
    cb.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){

  @Override
  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
   // TODO Auto-generated method stub
   if(cb.isChecked()){
    et.setTransformationMethod(
                  HideReturnsTransformationMethod.getInstance());
   }else{
    et.setTransformationMethod(
                  PasswordTransformationMethod.getInstance());
   }
  }
     
    });
  }
}