1、得到設定檔中的的顏色並且把控制項設定為這個顏色
Java代碼
- //得到color.xml檔案裡的顏色
- int tmp = getResources().getColor(R.drawable.blue);//得到設定檔裡的顏色
- myButton.setTextColor(tmp);
2、設定控制項中文字的字型
Java代碼
- myText.setTypeface(Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"));//設定字型
- fontButton.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));//用內部支援的方式設定
- //注意:1.保證檔案一定是ttf格式;
- //2.放到assets/fonts目錄下;
- //3.如果找不到相應的字型不會報錯,只是在啟動並執行時候顯示不出來
3、實現手勢操作和滑動操作
3.1、首先實現他們的介面
Java代碼
- public class GestureTest extends Activity implements OnTouchListener, OnGestureListener {
- ....
- }
3.2、在onTouch()方法中,我們調用GestureDetector的onTouchEvent()方法,將捕捉到的MotionEvent交給 GestureDetector 來分析是否有合適的callback函數來處理使用者的手勢
Java代碼
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // OnGestureListener will analyzes the given motion event
- return myGestureDetector.onTouchEvent(event);
- }
3.3、接下來,我們實現了以下6個抽象方法,其中最有用的當然是onFling()、onScroll()和onLongPress()了
Java代碼
- // 使用者(輕觸觸控螢幕後)鬆開,由一個1個MotionEvent ACTION_UP觸發
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- return false;
- }
Java代碼
- // 使用者按下觸控螢幕、快速移動後鬆開,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE, 1個ACTION_UP觸發
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- return false;
- }
Java代碼
- // 使用者按下觸控螢幕,並拖動,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE觸發
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
- return false;
- }
Java代碼
- //記得在onCreate()方法中寫上
- myTextView.setOnTouchListener(this);
- myTextView.setLongClickable(true);
4、android中Sqlite的使用
4.1、SQLite3支援 NULL、INTEGER、REAL(浮點數字)、TEXT(字串文本)和BLOB(二進位對象)五種資料類型,但實際上SQLite3也接受 varchar(n)、char(n)、decimal(p,s) 等資料類型,只不過在運算或儲存時會轉成對應的五種資料類型。 SQLite最大的特點是你可以儲存任何類型的資料到任何欄位中,無論這列聲明的資料類型是什麼。但定義為INTEGER PRIMARY KEY的欄位只能儲存64位整數。
4.2、SQLite可以解析大部分標準SQL語句
Sql代碼
- select * from 表名
- select * from 表名 order by id desc
- select name from person group by name having count(*)>1
- insert into 表名(欄位列表) values(值列表)
- update 表名 set 欄位名=值 where 條件子句
- delete from 表名 where 條件子句
4.3、分頁SQL與mysql類似,下面SQL語句擷取5條記錄,跳過前面3條記錄
Sql代碼
- select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
4.4、推薦使用SQLiteDatabase:
execSQL(String sql, Object[] bindArgs)方法的第一個參數為SQL語句,第二個參數為SQL語句中預留位置參數的值,參數值在數組中的順序要和預留位置的位置對應。
Sql代碼
- SQLiteDatabase db = ....;
- db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"username", 24});
- db.close();
4.5、SQLiteDatabase的rawQuery() 用於執行select語句,rawQuery()方法的第一個參數為select語句;第二個參數為select語句中預留位置參數的值,如果select語句沒有使用預留位置,該參數可以設定為null。
Sql代碼
- SQLiteDatabase db = ....;
- Cursor cursor = db.rawQuery(“select * from person”, null);
- while (cursor.moveToNext()) {
- int personid = cursor.getInt(0); //擷取第一列的值,第一列的索引從0開始
- String name = cursor.getString(1);//擷取第二列的值
- int age = cursor.getInt(2);//擷取第三列的值
- }
- cursor.close();
- db.close();
4.6、使用事務操作SQLite資料庫
Java代碼
- SQLiteDatabase db = ....;
- db.beginTransaction();//開始事務
- try {
- db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"username", 4});
- db.execSQL("update person set name=? where personid=?", new Object[]{"zhangsan", 1});
- db.setTransactionSuccessful();//調用此方法會在執行到endTransaction() 時提交當前事務,如果不調用此方法會復原事務
- } finally {
- db.endTransaction();//由事務的標誌決定是提交事務,還是復原事務
- }
- db.close();