android编程中的琐碎知识点汇总(1)
1、得到配置文件中的的颜色并且把控件设置为这个颜色//得到color.xml文件里的颜色int tmp =getResources().getColor(R.drawable.blue);//得到配置文件里的颜色myButton.setTextColor(tmp);2、设置控件中文字的字体
myText.setTypeface(Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"));//设置字体fontButton.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));//用内部支持的方式设置 //注意:1.保证文件一定是ttf格式;//2.放到assets/fonts目录下;//3.如果找不到相应的字体不会报错,只是在运行的时候显示不出来3、实现手势操作和滑动操作
3.1、首先实现他们的接口
public class GestureTest extends Activity implements OnTouchListener, OnGestureListener { .... }
3.2、在onTouch()方法中,我们调用GestureDetector的onTouchEvent()方法,将捕捉到的MotionEvent交给 GestureDetector 来分析是否有合适的callback函数来处理用户的手势
@Overridepublic boolean onTouch(View v, MotionEvent event) { // OnGestureListener will analyzes the given motion event return myGestureDetector.onTouchEvent(event); } 3.3、接下来,我们实现了以下6个抽象方法,其中最有用的当然是onFling()、onScroll()和onLongPress()了
// 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发@Overridepublic boolean onSingleTapUp(MotionEvent e) { return false; }// 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发 @Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {return false; }//记得在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语句
select * from 表名select * from 表名 order by id descselect name from person group by name having count(*)>1insert into 表名(字段列表) values(值列表)update 表名 set 字段名=值 where 条件子句delete from 表名 where 条件子句 4.3、分页SQL与mysql类似,下面SQL语句获取5条记录,跳过前面3条记录
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5 4.4、推荐使用SQLiteDatabase:
execSQL(String sql, Object[] bindArgs)方法的第一个参数为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。
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数据库
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();
页:
[1]