2010年1月31日 星期日

資料庫連線問題

在作資料庫連線的練習建立資料表時,要作一個進入程式時檢查如果資料表不存在就新增一個,如果已存在就開啟

SQLiteDatabase dbCheck = null;
//dbCheck = SQLiteDatabase.openDatabase(DATABASE_PATH+DATABASE_NAME, null,SQLiteDatabase.OPEN_READONLY);
if (dbCheck==null){
//新增資料庫
mOpenHelper = new DatabaseHelper(this);
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
String strSqlCreate = "create table " + TABLE_NAME + " (_id integer primary key, name text not null, age integer null, sex text null, hight integer null, weight integer null);";
try {
db.execSQL(strSqlCreate);
setTitle("建立資料表");
} catch (SQLException e){
setTitle(e.getMessage().toString());
}
} else {
setTitle("已建立");
}

程式第二行的DATABASE_PATH設定/data/data/com.xxx.android.test/databases/
DATABASE_NAME = "xxx"
在模擬器上是可以跑的,但是在實機上是沒有辨法跑的。
目前還摸不出答案

2010年1月30日 星期六

下拉元件

下拉元件分為三個部份,一個是畫面上的元件,一個是程式,還有就是下拉的內容

(為了完整呈現原始碼,所以在程式碼的&使用時要拿掉)

1.畫面main.xml加入



@+id/object:為元件的id=object
layout_width=" fill_parent="">layout_hight="wrap_content"為元件的高度=元件高度
drawSelectorOnTop="true" 指定這個下拉選單是否可以顯示在其他選單的上層,只有在多層選單上才會顯示出效果
prompt 指定下拉選單彈出選單選項提示(彈出選單的標題)

2.設定下拉元件的內容
在value下新增一個檔案,檔名為arrays.xml 這個檔案可用來放置像下拉選單的內容
因為是新的檔案,所以要在檔案中放入

<&?xml version="1.0" encoding="utf-8"?>
<&resources>
<&!-- obj下拉內容 -->
<&string-array name="obj">
<&item>男
<&item>女
<&/string-array>

<&/resources>




如果arrays.xml已存在,則只要加入<&string-array>段就可以了

3.程式 xxx.java加入

(外層)Spinner obj;

(外層)
private void initLayout(){
obj = (Spinner)findViewById(R.id.obj);
ArrayAdapter adp = ArrayAdapter.createFromResource(
this, R.array.sexs, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
obj.setAdapter(adp);
}

外層就是指
@Override
public void onCreate的上一層

在外層宣告 obj是Spinner

再設定一個自訂函數initLayout 用來初始化元件

obj = (Spinner)findViewById(R.id.obj); 指定程式中的obj為畫面上的Spinner

設定adapter(接口) 參考備註1 用來連結資料到下拉選單中

ArrayAdapter adp= ArrayAdapter.createFromResource(
this, R.array.obj, android.R.layout.simple_spinner_item);

這裏使用的是陣列型的接口.接回名稱訂為adp. 裏面包含三個參數
參數1是這個Activity本身(用this 表示)
參數2是資料來源也就是在步驟2中設定的資料。 R.array.obj 中的obj就是在步驟2中設定的name="obj"
參數3是傳入的陣列。simple_spinner_item為Android陣列所內建的預設下拉選單選項格式

setDropDownViewResource 為設定資源到下拉選單中

obj.setAdapter(adp);設定下拉元件的接口


最後在onCreate中加入執行initLayout();就可以了

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initLayout(); <-- 這一行
}

執行一下程式就可以看到效果了


備註1
在android中並不允許直接將字串陣列套用在介面元件中。介面選單的項目,都必預透過Adapter來連結。書上稱Adapter為接口。加了adapter主要是保持程式的使用彈性。
adapter有分為很多種
ArrayAdapter 讀入程式中已宣告的陣列,並轉換成介面元件看的懂的接回元件
SimpleAdapter 從XML文字字串檔讀入陣列
CursorAdapter 從ContentProvider讀入陣列.主要和 DB有關。像讀入通訊錄之類的

2010年1月23日 星期六

資料欄位的參數

EditText 一般比較常看到的參數是
android:layout_width="fill_parent" 就是向右延伸
android:layout_height="fill_parent" 是向下延伸到畫面底部
android:layout_height="wrap_content" 預設是一行,但可以動態增加
android:password="true" 密碼欄位
android:numbric="integer" 分為int,signed和decimal 都是數字為整數,小數
android:signleline="true" 單行

2010年1月1日 星期五

android 的圖示設計

在android 的程式設計中,圖示是很重要的一環,
大部份的行動設備上都是以圖示來代表各項功能。

在android的程式設計中,提供了圖示的規格範本
例如

尺寸 48px X 48px
色版 白色 r 0 | g 0 | b 0 用於圖示或斜光的內容
深灰漸層 1: r 169 | g 169 | b 169
2: r 126 | g 126 | b 126 用於停用圖示的明細
填補漸層 1: 1 r 105 | g 105 | b 105
2: r 10 | g 10 | b 10 用於填補顏色
黑色 Black r 255 | g 255 | b 255 用於陰影

參考 http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#menupalette