android 语言国际化 + 点击按钮出现menu + 点击menu出现dialog对话框 + radiobutton 点击事件

来源:互联网 发布:linux怎么运行sh脚本 编辑:程序博客网 时间:2024/04/19 10:28

//*************************************************activity**********************************************

package com.example.language;
import java.util.Locale;


import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;


public class MainActivity extends Activity {
RadioGroup language;
RadioButton englishButton,heButton2;
ImageButton imageButton ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
language=(RadioGroup) findViewById(R.id.languagechange);
englishButton=(RadioButton)findViewById(R.id.englishButton);
heButton2=(RadioButton)findViewById(R.id.heButton2);
imageButton=(ImageButton)findViewById(R.id.imagebutton);

//show();

imageButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
openOptionsMenu();
}
});
//heButton2.setChecked(true);
language.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.englishButton:
changeLanguage(MainActivity.this,"English");
((Activity)MainActivity.this).finish();

Intent intent=new Intent(MainActivity.this,MainActivity.class);
MainActivity.this.startActivity(intent);
break;
case R.id.heButton2:
changeLanguage(MainActivity.this,"Hebrew");
((Activity)MainActivity.this).finish();

Intent intent2=new Intent(MainActivity.this,MainActivity.class);
MainActivity.this.startActivity(intent2);
break;
default:
break;
}

}
});
}


public void openOptionsMenu() {
     super.openOptionsMenu(); 
  } 
@Override  
public boolean onCreateOptionsMenu(Menu menu) {   
super.onCreateOptionsMenu(menu); 
int group1 = 1;     
int gourp2 = 2;      
menu.add(group1, 1, 1, "English"); 
     menu.add(group1, 2, 2, "Hebrew");   
     return true;  
  }   
CharSequence items[] ={"1","2"};
@Override 
public boolean onOptionsItemSelected(MenuItem item) {  
   switch (item.getItemId()) {  
 case 1: // do something here   
 Log.i("MenuTest:", "ItemSelected:1");
AlertDialog builder = new AlertDialog.Builder(this)
.setTitle("language")
.setIcon(R.drawable.menu)
.setItems(items, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, String.valueOf(which), 0).show();
}
}).setPositiveButton("Ok", null).setNegativeButton("Cancle", null).show();
       break;      
 case 2: // do something here   
   Log.i("MenuTest:", "ItemSelected:2");        
    break;     
  default:  
        return super.onOptionsItemSelected(item);  
      }
return true;
 }


public  void changeLanguage(Context context,String language) {
Resources resources = context.getResources();// get res


Configuration config = resources.getConfiguration();// set confis


DisplayMetrics dm = resources.getDisplayMetrics();// get screen config
if (language.equalsIgnoreCase("English"))


config.locale = Locale.ENGLISH; 
else if (language.equalsIgnoreCase("Hebrew"))
config.locale = new Locale("iw_IL");


resources.updateConfiguration(config, dm);
}
public void show(){
Locale[] locals = Locale.getAvailableLocales();
for(Locale l:locals){
Log.i("ivan zhang yifan ", l.getDisplayCountry() + "  "+ l.getDisplayLanguage() + "   " + l.getDisplayName() + "  "+ l.toString());
}
//  for (int i = 0; i < locals.length; i++) {
//   if (SharedPfUtil.getValue(
//     WelcomeActivity.this.getApplicationContext(), "locale")
//     .equals(locals[i].getLanguage())) {
//    config.locale = locals[i];
//   }
//  }
}
}




//*****************************************************xml布局文件**********************************************

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:id="@+id/textview"
        android:layout_centerHorizontal="true"
        />


    <ImageButton
        android:id="@+id/imagebutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/menu"
        android:layout_alignParentRight="true"/>


    </RelativeLayout>
    
<RadioGroup 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/languagechange">
    <RadioButton
        android:id="@+id/englishButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="English" />


    <RadioButton
        android:id="@+id/heButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hebrew"  />
 </RadioGroup>
</LinearLayout>


//********************************************语言国际化要添加value文件夹*****************************

这是英文和希伯来文的strings文件

0 0