软件的国际化
在不同的地区显示不同的语言
在value中做文章
美国:
创建values-en-rUS文件夹
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name"></string>
<string name="action_settings">Settings</string>
<string name="hello_world">us</string>
</resources>
中国:
创建values-zh-rCN文件夹
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name"></string>
<string name="action_settings">Settings</string>
<string name="hello_world">中国</string>
</resources>
Acitivity
activity的创建
/* 1.创建一个MyActivity并继承于Activity
* 2.实现oncreate()并调用setContentView(R.layout.my_activity)
* 创建mmyactivity
* 3.在androidmanifest的application中注册
* 4.创建一个intent 类
* new Intent(context,MyActivity.class);
* 5.调用 startActivity(intent);
* startActivity(intent);
* */
页面的数据传递
页面的数据传递
/*所有的key都应该使用静态变量来传递*/
/*Intent的另一个作用,传递数据
* 1.intent.putExtra(key,value);
* 2.在另一个activity中
* 1.intent = getIntent();
* 2.intent.get相应类型Extra(key,defaultValue);
* */
/*传递对象
* 1.创建该类并实现 serializable;
* 2.intent.putExtra(key,对象);
* 3.(User)intent.getSerializableExtra("user");
* */
/*传递Bundle
* 1.创建一个Bundle类
* 2.bundle.put对应类型(String,对应类型);
* 3.intent.putExtra(name,bundle);
* 4.intent.getBundleExtra("hehe");
* 5.bundle.get对应类型(name);
* */
显式意图和隐式意图
/* 1.在manifest中创建对应的data属性
* 2.litent.setDataAndType(uri,type);
* uri = Uri.parse(网址);
* type="类型/类型"
*
* 3.intent.setData(uri);
* intent.setType("text/html");
* 结果不正常
*
* 作用:用于启动其他应用
*
* 选择:只启用本身应用就显示
* 想启动其他应用就隐士
* */
private void init3() {
Intent intent = new Intent();
Uri uri = Uri.parse("https://www.520it.com:8080/android/test");
intent.setDataAndType(uri, "text/html");
startActivity(intent);
}
/*
* 显式启动:在启动的过程中知道要启动的对象
* 隐式启动:
* 1.调用intent的无参构造器
* 2.给intent设置动作的条件
* 1.intent的setAction("condition");
* 3.在androidmanifest中给对应的activity设置intent-filter /action/cate
* 注意只要配置了一个action就必须配置一个categorydefault
* 存在两个符合条件的会弹出选择框
* 不存在符合条件的会报出异常
* 4.可以设置category筛选,可以有多个
* intent.addCategory();
*/
private void init() {
Intent intent = new Intent();
intent.setAction("condition");
startActivity(intent);
}
获取页面的返回值
public void sexy(View v){
Intent intent = new Intent(this,Sexy_Activity.class);
startActivityForResult(intent, CHOOSE_SEXY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data!=null) {
if (requestCode==CHOOSE_ICON) {
int id = data.getIntExtra("icon", R.drawable.ic_launcher);
Log.v("meeeeeee", "s"+id);
iv.setImageResource(id);
}
else if (requestCode==CHOOSE_SEXY) {
String sexy = data.getStringExtra("sexy");
tv.setText(sexy);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
SharePreference
@Override
protected void onDestroy() {
super.onDestroy();
Log.v("meeeeeee", "销毁");
String content =mContent.getText().toString();
if(!TextUtils.isEmpty(content)){
SharedPreferences sp = getSharedPreferences("name", MODE_PRIVATE);
Editor edit = sp.edit();
edit.putString("key", content);
edit.commit();
}
}
Activity的生命周期
横竖屏切换
接收打入电话的广播
/*创建一个广播接收者:应用不需要运行,只要有电话打进来,该方法就会被调用,
* 1.创建一个类继承于BroadcastReceiver,重写onreceiver
* 2.在manifest中注册
* 3.在manifest中指定创建intent-filter
* name:NEW_OUTGOING_CALL
* 4.配置使用权限process_outgoing_call
* */
配置权限和注册广播:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<receiver android:name="com.example.PhoneReceiver" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
SD安装事件的广播接收者
public class SdCardReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("android.intent.action.MEDIA_MOUNTED")) {
}else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED)) {
Log.v("meeeeeee", "已卸载");
}
}
}
注册:
<receiver android:name="com.example.SdCardReceiver">
<intent-filter >
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
<data android:scheme="file"/>
</intent-filter>
</receiver>