Android笔记一
- 在 Eclipse 中可以用快捷键 Ctrl+Shift+O 快速 import 所需的或 去掉无需的包
- Ctrl+Shift+F 可以快速将代码规则化
Log的使用
- 使用之前必须定义一个标志 TAG
private String tag = "CodeView"; //CodeView 为一个标志,一般为Acvitity的名字
//只要在想打印的地方写上该代码,就可以打印相应的东西
Log.v(tag,"string"); //string为要打印的字符串
Android TTS 的使用
- Android语言包调用
- 代码如下
//包含语音包
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
TextToSpeech tts;
//初始化
tts = new TextToSpeech(this,new OnInitListener()
{
@Override
public void onInit(int status) {
//如果装载TTS引擎成功
if(status == TextToSpeech.SUCCESS)
{
//设置使用美式英语朗读(虽然设置里有中文选项Locale.Chinese,但并不支持中文)
int result = tts.setLanguage(Locale.US);
//如果不支持设置的语言
if(result != TextToSpeech.LANG_COUNTRY_AVAILABLE
&& result != TextToSpeech.LANG_AVAILABLE)
{
Toast.makeText(CodeView.this, "TTS暂时不支持这种语言朗读", 50000).show();
}
}
}
});
speak.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
//执行朗读
tts.speak("班车即将到达 "+ str, TextToSpeech.QUEUE_ADD, null);
}});
Android Toast 使用
- 在屏幕提示内容
import android.widget.Toast;
//CodeView 为 Activity 的名字,String 为要显示的内容
Toast.makeText(CodeView.this,"String",Toast.LENGTH_LONG).show();
Android Timer 使用
- 定时器的使用
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Log.v(tag, "test");
}}, 0,1000); //注意 这里的 0 表示立即执行,1000表示1s循环执行 run()方法一次
Activity 之间的跳转
Intent intent = new(FirstActivity.this,SecendActivity.class);
startActivity(intent);
Activity 生命机制
- Android 四个重要的组成元素:Activity,Service, BroadcastReceiver 和 ContentProvider
Bundle 在 Activity 之间交换数据
- Intent 提供了多个重载方法来携带额外的数据
- putExtras(Bundle data) : 向intent中放入需要携带的数据
- 上面方法中的 Bundle 就是一个简单的数据携带包,该 Bundle 对象包含了多个方法来存入数据
- putXxx(String key,Xxx data) : 向 Bundle 放入 int ,long 等类型的数据
-
为了取出Bundle 数据携带包里的数据,Bundle 提供了如下方法:
- getXxx(String key): 从 Bundle 取出 int,long 等各种类型的数据
- getSerializable(String key,Serializable data) :从 Bundle 取出一个可序列化的对象。
-
发送数据代码
int data
//创建一个 Bundle 对象
Bundle data = new Bundle();
data.putSerializable("key",data)
//创建一个Intent
Intent intent = new Intent(FirstActivity.this,SecendActivity.class);
intent.putExtras(data);
- 接收数据代码
Intent intent = getIntent();
Bundle data = intent.getExtras();
int get_data = (interge)data.getSerializable("key");
启动其他 Activity 并返回结果
- Activity 还提供了一个starActivityForResult(Intent intent,int requestCode)方法来启动其他Activity,并获取制定启动的Activity返回的结果。
- 为了获取被启动的Activity所返回的结果,当前Activity需要重写 onActivityResult(int requestCode,int resultCode,Intent intent),其中requestCode 代表请求码,而 resultCode 代表 Activity 返回的结果码
- 请求的Activity的代码
Intent intent = new Intent (FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,0); //请求码为0
//复写ActivityForResult 方法
@Override
public void onActivityResult(int requestCode,int resultCode,Intent intent)
{
if(erquestCode == 0 && requestCode == 0)
{
//取出 Intent 中的Extras 数据
Bundle data = intent.getExtras();
//取出Bundle中的数据
int get_data = data.getLong("key");
}
}
- 被请求的Activity代码
//获取启动该Activity之前的Activity对应的Intent
Intent intent = getIntent();
Bundle data = new Bundle();
data.putString("key",value); //valeu 为要返回的结果,data.putXxx 根据 value的类型而不同,Xxx 为类型
intent.putExtras(data);
//设置被请求的Activity的结果码,并设置结束之后退回的Activity
SecendActivity.this.setResult(0,intent);
SecendActivity.this.finish();