mount -t vfat /dev/mmcblk0p1 /mnt/yaffs/
public Bundle getData ()
获取附加在此事件上的任意数据的Bundle对象,需要时延迟创建。通过调用setData(Bundle)来设置Bundle的值。
需要注意的是,如果通过Messenger对象在进程间传递数据时,需要调用Bundle类的Bundle.setClassLoader()方
法来设置ClassLoader,这样当接收到消息时可以实例化Bundle里的对象。
Handler
消息的处理者。通过Handler对象我们可以封装Message对象,然后通过sendMessage(msg)把Message对象添加
到MessageQueue中;当MessageQueue循环到该Message时,就会调用该Message对象对应的handler对象的
handleMessage()方法对其进行处理。由于是在handleMessage()方法中处理消息,因此我们应该编写一个类继承自
Handler,然后在handleMessage()处理我们需要的操作。
1.Message
消息对象,顾名思义就是记录消息信息的类。这个类有几个比较重要的字段:
a.arg1和arg2:我们可以使用两个字段用来存放我们需要传递的整型值,在Service中,我们可以用来存放Service的ID。
b.obj:该字段是Object类型,我们可以让该字段传递某个多项到消息的接受者中。
c.what:这个字段可以说是消息的标志,在消息处理中,我们可以根据这个字段的不同的值进行不同的处理,类似于我们
在处理Button事件时,通过switch(v.getId())判断是点击了哪个按钮。
在使用Message时,我们可以通过new Message()创建一个Message实例,但是Android更推荐我们通过Message.obtain()或
者Handler.obtainMessage()获取Message对象。这并不一定是直接创建一个新的实例,而是先从消息池中看有没有可用的
Message实例,存在则直接取出并返回这个实例。反之如果消息池中没有可用的Message实例,则根据给定的参数new一个新
Message对象。通过分析源码可得知,Android系统默认情况下在消息池中实例化10个Message对象。
控件间距
android:layout_marginLeft="5dip" //距离左边
android:layout_marginRight="5dip" //距离右边
android:layout_marginTop="5dip" //距离上面
android:layout_marginRight="5dip" //距离下面
控件显示位置
android:gravity="center" //left,right, top, bottom
android:gravity="center_horizontal"
android:layout_gravity是本元素对父元素的重力方向。
android:layout_gravity属性则设置控件本身相对于父控件的显示位置
android:gravity是本元素所有子元素的重力方向。
android:layout_gravity="center_vertical"
android:layout_gravity="left"
android:layout_gravity="left|bottom"
设置Edit Text只读
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sqliteshowdemo);
setTitle("查看日记");
//设置Edit Text只读--start
showTitle.setOnFocusChangeListener(focus_listener_noIM);
showTitle.setOnTouchListener(touch_listener_noIM);
showContent.setOnFocusChangeListener(focus_listener_noIM);
showContent.setOnTouchListener(touch_listener_noIM);
//设置Edit Text只读--end
}
/*
* 设置Edit Text只读
*/
private void hideIM(View edt){
try {
InputMethodManager im = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
IBinder windowToken = edt.getWindowToken();
if(windowToken != null) {
im.hideSoftInputFromWindow(windowToken, 0);
}
} catch (Exception e) {
Log.e("HideInputMethod", "failed:"+e.getMessage());
}
}
/*
* 设置Edit Text只读
*/
private OnFocusChangeListener focus_listener_noIM = new OnFocusChangeListener(){
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus==true) {
hideIM(v);
}
}
};
/*
* 设置Edit Text只读
*/
private OnTouchListener touch_listener_noIM = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN) {
hideIM(v);
}
return false;
}
};
XML文件中EditText属性:
android:singleLine="true"
android:ellipsize="none"
android:editable="false"
android:inputType="none"
几种像素:
根据google的推荐,像素统一使用dip,字体统一使用sp
px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。
dip,就是把屏幕的高分成480分,宽分成320分。比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度。
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
CharSequence 是 char 值的一个可读序列。此接口对许多不同种类的 char 序列提供统一的只读访问
(个人理解应该算得上是char类型得一个集合,是interface)
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例来实现。
Dalvik VM获取生成的Java类文件,将它们组合成一个或多个Dalvik可执行文件(.dex).它重用
多个类文件中的重复信息,与未压缩的传统.jar文件相比,有效地将空间需求减少一半。而且
对垃圾收集进行了优化。Dalvik VM是在c库之上,但又在各种java程序之下的一个中间部分。
Activity表示应用程序中的一个屏幕。大部分应用程序内都拥有多个Activity。
通过ContentProvider可以公开数据,容许应用程序使用来自其他应用程序的数据。