国际化,自定义控件,bundle,Activity

来源:互联网 发布:挖贝软件下载 编辑:程序博客网 时间:2024/05/29 02:34

应用的国际化

当手机系统语言的改成某个语言,保证语言的兼容性.使用语言的国际化

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. 启动ActivityIntent intent = new Intent(this, SecondActivity.class);// 2. 传值 *通过intent传递数据 *传递的⽅式key-valueintent.putExtra("username", "zhangsan");startActivity(intent);

2)在SecondActivity中,获取上⼀个界⾯传递过来的数据:

// 获取上⼀个界⾯的意图IntentIntent 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个界⾯定义好不同的requestCodestartActivityForResult(Intent intent, int requestCode)//2. 在onActivityResult中,根据requestCode判断是哪个界⾯返回的数据@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {     if(requestCode=xxx){    ... }else if(requestCode=xxx){        ...        }    }
阅读全文
0 0