应用的国际化
当手机系统语言的改成某个语言,保证语言的兼容性.使用语言的国际化
1.先把text属性的代码变成@/String/…..
android:text="提交"--->android:text="输入"--->android:text="@String/input"--->
2.在values文件夹中的string的xml文件添加
<string name="input">输入</string>
3.在res文家中创建一个文件夹,名字为” values-语言支持-国家简称 “,如下图
中⽂(中国): values-zh-rCN
中⽂(台湾): values-zh-rTW
中⽂(⾹港): values-zh-rHK
德⽂(瑞⼠): values-de-rCH
英语(英国): values-en-rGB
德⽂(德国): values-de-rDE
英⽂(澳⼤利亚): values-en-rAU
英⽂(加拿⼤): values-en-rCA
希腊⽂: values-el-rGR
英⽂(爱尔兰): values-en-rIE
⻄班⽛⽂(⻄班⽛):values-es-rES
英⽂(印度): values-en-rIN
英⽂(新⻄兰): values-en-rNZ
英⽂(新加坡): values-en-rSG
法⽂(⽐利时): values-fr-rBE
英⽂(南⾮): values-en-rZA
法⽂(加拿⼤): values-fr-rCA
意⼤利⽂(意⼤利):values-it-rIT
葡萄⽛⽂(巴⻄): values-pt-rBR
⽇⽂: values-ja-rJP
葡萄⽛⽂(葡萄⽛):values-pt-rPT
韩⽂: values-ko-rKR
Style.xml文件的使用
当一些类似的布局,为了防止批量修改,然后修改很多,使用Style属性
原来的布局:
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="fitXY"/>
在Style.xml文件中添加:
parent是指引用父类的布局
<style name="styleName" parent="@style/AppTheme">
<item name="android:layout_width">200dp</item>
<item name="android:layout_height">200dp</item>
<item name="android:scaleType">fitXY</item>
</style>
布局文件就变成:(相当于引用)
<ImageView
style="@style/styleName"/>
两个Activity之间传值
1) 在FirstActivity中通过意图启动新的界⾯,并在启动前将数据添加到意图中,如下代码介绍了如何传递⼀个字
符串“zhangsan”到新的界⾯。
// 1. 启动Activity
Intent intent = new Intent(this, SecondActivity.class);
// 2. 传值 *通过intent传递数据 *传递的⽅式key-value
intent.putExtra("username", "zhangsan");
startActivity(intent);
2)在SecondActivity中,获取上⼀个界⾯传递过来的数据:
// 获取上⼀个界⾯的意图Intent
Intent intent = getIntent();
// 获取意图中的数据
String data = intent.getStringExtra("username");
1)这⾥模拟传递⼀个Student对象,实现getting和setting方法。Student类的定义(这⾥没什么变化 只是简单添加了⼀个Serializable接⼝)如下:
public class Student implements Serializable {
private String name;
private String age;
public Student(String name, String age) {
this.name = name;
this.age = age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2) 在FirstActivity中通过意图启动新的界⾯,并传递Person对象
Intent intent = new Intent(this, CActivity.class);
Student studentobj = new Student("李四","20");
intent.putExtra("studentname",studentobj);
startActivity(intent);
3)在SecondActivity中,获取上⼀个界⾯传递过来的对象:
传递对象
Intent intent = getIntent();
//获取值
Student studentbean = (Student) intent.getSerializableExtra("studentname");
banddle:
在原来的界⾯上,将数据封装到bundle中:
public void intoSecond(View view) {
Intent intent = new Intent(this, Main2Activity.class);
Bundle bundle = new Bundle();
bundle.putString("name","张三");
bundle.putString("age","17");
intent.putExtra("bundle",bundle);
startActivity(intent);
}
在新的界⾯上,取出bundle中的数据:
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("bundle");
String name = bundle.getString("name");
String age = bundle.getString("age");
Toast.makeText(this, name+" , "+age, Toast.LENGTH_SHORT).show();
startActivityForResult
//1. 修改启动代码:
//启动界⾯的时候 为2个界⾯定义好不同的requestCode
startActivityForResult(Intent intent, int requestCode)
//2. 在onActivityResult中,根据requestCode判断是哪个界⾯返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode=xxx){
...
}else if(requestCode=xxx){
...
}
}