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

应用的国际化

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

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){
        ...
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值