什么公司在百度做网站,温州网页设计招聘信息网,买域名,wordpress 引用文件本地化及多语言支持#xff0c;是目前手机软件必须面对的问题#xff0c;这里用一个简单的例子来说明在Android Studio下如何实现。
创建一个Empty Views Activity项目#xff0c;语言选择Kotlin
实现一个简单的功能#xff0c;一条欢迎#xff0c;一个按钮#xff0c;…本地化及多语言支持是目前手机软件必须面对的问题这里用一个简单的例子来说明在Android Studio下如何实现。
创建一个Empty Views Activity项目语言选择Kotlin
实现一个简单的功能一条欢迎一个按钮按下后显示一条信息。
代码如下 val button: Button findViewById(R.id.button)val textView: TextView findViewById(R.id.textView)val textview2: TextView findViewById(R.id.textView2)textview2.setText(Welcome!)textView.setText()button.setOnClickListener(){textView.setText(This is a message!)}
仿真输出效果如下 这里看到所有输出都是英文下面要实现支持汉英两种设置。
编辑资源管理下面的字符串文件
打开工程目录下的\app\src\main\res\values\strings.xml点击Open editor。 调出一个Translations Editor窗口点击多语言下拉菜单。 选中中文。 对各个字串进行双语录入 之后可以看到在资源管理器中出现了一个新的字符串文件 重新检查代码去除HardCoded 告警 val button: Button findViewById(R.id.button)val textView: TextView findViewById(R.id.textView)val textview2: TextView findViewById(R.id.textView2)textview2.setText(R.string.title)textView.setText()button.setOnClickListener(){textView.setText(R.string.message)}
对各个控件的文本属性用字符串变量替代。 手机设置中改变语言选项 在仿真设备界面上改变系统设置中的语言选项改为中文。 回到项目的应用就能看到对应的中文输出了。 这里只是在输出界面文字上本地化的例子真实项目上的本地化处理远远要复杂的多要考虑文字习惯特定代码如货币时间单位电话号码格式等等的相关问题有时甚至要考虑重新设计页面布局。
优化代码加入屏幕旋转的考虑
屏幕发生旋转要调用应用的onDestroy()所有的状态都要进入初始状态。
本项目中textView在按钮按下前为空按下后为“This is a message”。
如果在按钮按下后屏幕发生了旋转如果不做任何处理 这个文本框就要重新变为空。之前操作的状态就没有保存下来。
方法OnCreate()的参数savedInstanceState就是用来解决这一问题。
可以在方法onSaveInstanceState将要保存的状态保留下来。
优化后的代码如下
class MainActivity : AppCompatActivity() {lateinit var textView: TextViewoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)textView findViewById(R.id.textView)if(savedInstanceState ! null){val str savedInstanceState.getString(KEY)textView.text str}elsetextView.text val button: Button findViewById(R.id.button)val textview2: TextView findViewById(R.id.textView2)textview2.setText(R.string.title)button.setOnClickListener(){textView.setText(R.string.message)}}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)outState.putString(KEY,textView.text.toString())}
}
这样在按钮按下后旋转屏幕依然可以看到“This is a message”