顯示具有 Android 標籤的文章。 顯示所有文章
顯示具有 Android 標籤的文章。 顯示所有文章

2016年6月22日 星期三

Android imageButton底圖透明

在XML中將imageButton的屬性中增加android:background="@android:color/transparent",就可以將imageButton底圖設為透明

2015年12月3日 星期四

Android要使用Listener來監聽物件

//首先需在MainActivity implements監聽動作
public class MainActivity extends AppCompatActivity
implements RadioGroup.OnCheckedChangeListener,TextWatcher
{
RadioGroup unit;
EditText value;
TextView txv;

@Overrideprotected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
//設定要監聽的物件
    unit=(RadioGroup)findViewById(R.id.radioGroup);
    unit.setOnCheckedChangeListener(this);
    value=(EditText)findViewById(R.id.editText);
    value.addTextChangedListener(this);
    txv=(TextView)findViewById(R.id.textView2);

}

//以下是監聽的事件
@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {
    calc();
}


@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Overridepublic void afterTextChanged(Editable s) {
    calc();
}

protected void calc(){
   
}

}

使用String.format()格式化字串

String.format()可以用來格式化字串

例如
浮點數取小數點後一位
String.format("%.1f",3.14159);會取得3.1

%將3.14159帶入
.1取得小數點後一位
f要轉換的值是浮點數

判斷EditText有無輸入值

要判斷EditText有無輸入值,可用以下方式判斷
if("".equals(editText.getText().toString().trim()))
{
}

或可用
editText.getText().length()== 0

editText.getText().toString() == null 
editText.getText().toString().equals("")

2014年2月11日 星期二

Android switch,if,while,for用法

1.switch用法,多重條件選擇,須注意字串不能使用
switch(a)
{
     case 1 :
                 //要執行動作
                 break;

     case 2 :
                //要執行動作
                break

     default :
               //要執行動作
                break;
}

2.if用法,當條件成立即執行,否則執行另一
if (a==b)
{
     //要執行動作
}
else
{
     //要執行動作
}

3.for用法,重覆執行,i每次加1至條件不符即跳出,注意最後結果i=4
for(int i=1,i<5,i++)
{
      要執行動作
}

4.while用法,重覆執行,一但條件不符合即跳出,注意最後結果i=5
int i=1;
while(i<5)
{
    i++;
}

2014年1月13日 星期一

Android彈出視窗

在Android中要使用彈出視窗,可使用以下方式

 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());//須注意這裡如果使用Fragment,要使用getActivity(),如果是一般的Activity則使用this就可以


builder.setTitle("標頭");
builder.setMessage("訊息");
builder.setPositiveButton("按鈕",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        //按下按鈕要執行的動作
                    }
                }
                );
                builder.show();

Android在使用網路時,在AndroidManifest.xml宣告





  •  <uses-permission android:name="android.permission.INTERNET"/>允許程式開啟網路Sockets
  •  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>允許程式存取網路資訊
  • Android TitleBar控制

    首先查看AndroidManifest.xml中,android:theme的屬性,預設為"@style/AppTheme" ,代表桌面的設定位於styles.xml中的<style name="AppTheme"></style>,增加item屬性例如:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">    
            <item name="android:windowNoTitle">true</item><!--隱藏Title-->
            <item name="android:windowFullscreen">true</item><!--全螢幕顯示-->
        </style>

    Android結束程式

    使用finish()或onDestroy()時,系統的process並不會結束,
    建議使用android.os.Process.killProcess(android.os.Process.myPid());
    這樣才會完整的結束程式.

    2013年9月11日 星期三

    AndroidStudio安裝步驟

    1.首先下載JAVA JDK並安裝
    路徑http://www.oracle.com/technetwork/java/javase/downloads/index.html

    2.設定JDK環境
    安裝完JDK後,記住安裝的路徑,在我的電腦按右鍵選內容>進階系統設定>進階>環境變數>系統變數>新增,增加一組參數變數名稱:JAVA_HOME ,變數值為安裝JDK的路徑,例如C:\Program Files\Java\jdk1.7.0_21.

    3.下載AndroidStudio並安裝
    路徑http://developer.android.com/sdk/installing/studio.html



    附註:官方的訓練文件,可以參考
    http://developer.android.com/intl/zh-tw/training/index.html





    2013年8月27日 星期二

    Android SQLite用法

    首先新增一個Class,名稱訂為DbHelper

    package com.example.myapplication;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;


    public class DbHelper extends SQLiteOpenHelper {
        public static final int DATABASE_VERSION = 1;  //資料庫版本
        public static final String DATABASE_NAME = "dataBase.db";  //資料庫名稱
        public static final  String TABLE_NAME="tableName";  //資料表名稱


        public DbHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

    //新增資料表動作
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE "+TABLE_NAME+" (chnl varchar(10),progdate varchar(10),playdate varchar(10),playtime varchar(5),progname varchar(50))");
        }

    //資料庫升級動作,目前資料庫版本號碼和程式上定義的不同時,就會觸發升級動作
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);
            onCreate(db);
        }


    在MainActivity.java中加入

    //新增資料進資料庫
            public void addDb(String chnl,String progdate,String playdate,String playtime,String progname){           
                SQLiteDatabase db =dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("chnl", chnl);
                values.put("progdate",progdate);
                values.put("playdate",playdate);
                values.put("playtime",playtime);
                values.put("progname",progname);
                 //第一個值為table名稱,第二個值為當insert值為空時,會由null值取代,因為不允許值為空白,第三個值為新增的值
                db.insert("progPlay", null, values);
            }


    //刪除資料
            public void delDb() {
                SQLiteDatabase db =dbHelper.getWritableDatabase();       
                //第一個值為資料表名稱,第二個值為條件,如果設為?號,可由第三個值裡的陣列值來套用
                db.delete("progPlay","chnl=?",new String[] { "001" });
           
            }

    //取出資料庫裡的資料
    public void viewDataBase(String chnl){
            Cursor cursor=dbHelper.getReadableDatabase().rawQuery("select * from progPlay where chnl='"+chnl+"'",null);
            String[] sNote = new String[cursor.getCount()];
            int rows_num = cursor.getCount();//取得資料表列數
            if(rows_num != 0) {
                cursor.moveToFirst();   //將指標移至第一筆資料
                for(int i=0; i<rows_num; i++) {              
                    sNote[i]=cursor.getString(0)+" "+cursor.getString(1);
                    cursor.moveToNext();//將指標移至下一筆資料
                }
                }
            cursor.close(); //關閉Cursor    
            }

    SQLite使用上須注意幾點,SQLite沒有日期格式,日期只能以字串的方式存入,如果要篩選某個日期時可用where datetime('日期欄位名稱')=datetime('2013-08-01'),要注意日期的格式"2013-8-1"不等於"2013-08-01",在使用上要注意

    Android常用函數

    //取得部分字串
    String string="abcd1234";
    string.substring(0,3);//第一個值為字串起始位置,由0開始,第二個值為取的字串長度,所以由0開始取3碼,會取得abc

    //字串比較
    String string1="abcdef";
    String string2="abcdef1234";
    string1.equals(string2);


    //數字轉字串
    Integer.toString(12345);

    String.valueOf(12345);


    //布林轉字串
    Boolean.toString(true)


    //彈出視窗用法
    Toast.makeText(getApplicationContext(),"彈出視窗",Toast.LENGTH_LONG).show();


    //由程式自動觸發onclick動作
    Button button = (Button)getBaseView().findViewById(R.id.button1);
    button..performClick();

    2013年8月26日 星期一

    Android除錯方式

    可在程式中加入
    Log.d("CHECK_POINT", "可直接輸入字串或承接變數");
    來檢查程式目前執行到的地方,或是直接顯示變數的資料.

    在devices logcat中的篩選欄位輸入CHECK_POINT就可以過濾出要顯示的資料

    Android日期函數

    需要IMPORT
    android.text.format.Time


    Time time=new Time();或Time time=new Time("GMT+8")加上時區資料

    time.setToNow();  //取得系統目前日期時間

    int year=time.year;  //取得西元年

    int month=time.month;  //取得月份[0-11],需要加1來轉換

    int day=time.monthDay;  //取得日期[1-31]

    int hour=time.hour;  //取得小時[0-23]

    int minute =time.minute;  //取得分鐘[0-59]

    int second=time.second;  //取得秒[0-61]


    其餘可參考連結
    http://developer.android.com/reference/android/text/format/Time.html#MONTH

    2013年8月14日 星期三

    Android’s HTTP Clients

    在Android上要連接上網路,有Apache HTTP Client及HttpURLConnection.

    基本上的功能都差不多,在官方文件上是推薦使用HttpURLConnection,理由是API檔案較Apache HTTP Client來的小,而且是最早期開發的元件之一,穩定性較高,網路連接的效率比較高,對電力的損耗也較低.

    不過HttpURLConnection在某些Android版本上有問題,開發版本是用於Eclair(2.0 or 2.1)或Froyo(2.2)會推薦使用Apache HTTP Client元件,Gingerbread(2.3)或更高的版本則推薦使用HttpURLConnection.

    參考資料:http://android-developers.blogspot.tw/2011/09/androids-http-clients.html

    2013年7月31日 星期三

    JAVA程式撰寫格式規則

    註解方式:

    //這是單行註解

    /*
        多行註解1
        多行註解2
        多行註解3
        多行註解4
    */


    public class GetWebData3 //Class開頭大寫
    {

        public  String getJson() //Method開頭小寫,如有兩個英文字組合,第二個英文字開頭大寫
        {       
            String webLine = "abcd";//Variable開頭小寫,如有兩個英文字組合,第二個英文字開頭大寫
        }
    }