parent
9b0ea3a73c
commit
79275aa1c8
@ -0,0 +1,2 @@ |
||||
#登陆表单密码长度 |
||||
password.length=5 |
@ -0,0 +1,58 @@ |
||||
package com.community.pocket.data.adapter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.View; |
||||
import android.view.ViewGroup; |
||||
import android.widget.BaseAdapter; |
||||
import android.widget.TextView; |
||||
|
||||
import com.community.pocket.util.LocaleType; |
||||
|
||||
import org.xutils.view.annotation.ViewInject; |
||||
import org.xutils.x; |
||||
|
||||
public class LocaleAdapter extends BaseAdapter { |
||||
private LayoutInflater inflater; |
||||
|
||||
public LocaleAdapter(LayoutInflater inflater) { |
||||
this.inflater = inflater; |
||||
} |
||||
|
||||
@Override |
||||
public int getCount() { |
||||
return LocaleType.values().length; |
||||
} |
||||
|
||||
@Override |
||||
public Object getItem(int position) { |
||||
return LocaleType.getLocale(position); |
||||
} |
||||
|
||||
@Override |
||||
public long getItemId(int position) { |
||||
return position; |
||||
} |
||||
|
||||
@Override |
||||
public View getView(int position, View convertView, ViewGroup parent) { |
||||
ViewHolder viewHolder; |
||||
if (convertView == null) { |
||||
convertView = inflater.inflate(android.R.layout.simple_list_item_1, null); |
||||
viewHolder = new ViewHolder(); |
||||
//ViewHolder注解
|
||||
x.view().inject(viewHolder, convertView); |
||||
convertView.setTag(viewHolder); |
||||
} else { |
||||
viewHolder = (ViewHolder) convertView.getTag(); |
||||
} |
||||
viewHolder.childName.setText(convertView.getResources().getText(LocaleType.getLocale(position).getResId())); |
||||
return convertView; |
||||
} |
||||
|
||||
private class ViewHolder { |
||||
@ViewInject(android.R.id.text1)//加载item的控件
|
||||
TextView childName; |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,22 @@ |
||||
package com.community.pocket.ui; |
||||
|
||||
import android.content.Context; |
||||
import android.os.Bundle; |
||||
|
||||
import androidx.annotation.Nullable; |
||||
import androidx.appcompat.app.AppCompatActivity; |
||||
|
||||
import org.xutils.x; |
||||
|
||||
public abstract class BaseActivity extends AppCompatActivity { |
||||
@Override |
||||
protected void attachBaseContext(Context newBase) { |
||||
super.attachBaseContext(newBase); |
||||
} |
||||
|
||||
@Override |
||||
protected void onCreate(@Nullable Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
x.view().inject(this);//加载布局,控件
|
||||
} |
||||
} |
@ -0,0 +1,8 @@ |
||||
package com.community.pocket.ui; |
||||
|
||||
import android.annotation.SuppressLint; |
||||
|
||||
@SuppressLint("Registered") |
||||
public class MainActivity extends BaseActivity { |
||||
|
||||
} |
@ -0,0 +1,50 @@ |
||||
package com.community.pocket.util; |
||||
|
||||
import android.app.Application; |
||||
import android.content.Context; |
||||
import android.content.res.Configuration; |
||||
|
||||
import com.github.jokar.multilanguages.library.LanguageLocalListener; |
||||
import com.github.jokar.multilanguages.library.MultiLanguage; |
||||
|
||||
import org.jetbrains.annotations.NotNull; |
||||
import org.xutils.x; |
||||
|
||||
import java.util.Locale; |
||||
|
||||
/** |
||||
* 应用启动初始化 |
||||
*/ |
||||
public class InitApp extends Application { |
||||
@Override |
||||
public void onCreate() { |
||||
super.onCreate(); |
||||
//框架初始化
|
||||
x.Ext.init(this); |
||||
|
||||
MultiLanguage.init(new LanguageLocalListener() { |
||||
@Override |
||||
public Locale getSetLanguageLocale(Context context) { |
||||
//返回自己本地保存选择的语言设置
|
||||
return LocalManageUtil.getSetLanguageLocale(context); |
||||
} |
||||
}); |
||||
MultiLanguage.setApplicationLanguage(this); |
||||
} |
||||
|
||||
@Override |
||||
protected void attachBaseContext(Context base) { |
||||
//第一次进入app时保存系统选择语言(为了选择随系统语言时使用,如果不保存,切换语言后就拿不到了)
|
||||
LocalManageUtil.saveSystemCurrentLanguage(base); |
||||
super.attachBaseContext(MultiLanguage.setLocal(base)); |
||||
} |
||||
|
||||
@Override |
||||
public void onConfigurationChanged(@NotNull Configuration newConfig) { |
||||
super.onConfigurationChanged(newConfig); |
||||
//用户在系统设置页面切换语言时保存系统选择语言(为了选择随系统语言时使用,如果不保存,切换语言后就拿不到了)
|
||||
LocalManageUtil.saveSystemCurrentLanguage(getApplicationContext(), newConfig); |
||||
MultiLanguage.onConfigurationChanged(getApplicationContext()); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,65 @@ |
||||
package com.community.pocket.util; |
||||
|
||||
import android.content.Context; |
||||
import android.content.res.Configuration; |
||||
|
||||
import com.github.jokar.multilanguages.library.MultiLanguage; |
||||
|
||||
import java.util.Locale; |
||||
|
||||
//界面语言管理工具类
|
||||
public class LocalManageUtil { |
||||
private static final String TAG = "LocalManageUtil"; |
||||
|
||||
/** |
||||
* 获取系统的locale |
||||
* |
||||
* @return Locale对象 |
||||
*/ |
||||
private static Locale getSystemLocale(Context context) { |
||||
return SPUtil.getInstance(context).getSystemCurrentLocal(); |
||||
} |
||||
|
||||
public static String getSelectLanguage(Context context) { |
||||
int type = SPUtil.getInstance(context).getSelectLanguage(); |
||||
return context.getString(LocaleType.getLocale(type).getResId()); |
||||
} |
||||
|
||||
/** |
||||
* 获取选择的语言设置 |
||||
* |
||||
* @param context 应用上下文 |
||||
*/ |
||||
static Locale getSetLanguageLocale(Context context) { |
||||
|
||||
int type = SPUtil.getInstance(context).getSelectLanguage(); |
||||
if (type == 0) { |
||||
return getSystemLocale(context); |
||||
} else { |
||||
return LocaleType.getLocale(type).getLocale(); |
||||
} |
||||
} |
||||
|
||||
|
||||
static void saveSystemCurrentLanguage(Context context) { |
||||
SPUtil.getInstance(context).setSystemCurrentLocal(MultiLanguage.getSystemLocal(context)); |
||||
} |
||||
|
||||
/** |
||||
* 保存系统语言 |
||||
* |
||||
* @param context 应用上下文 |
||||
* @param newConfig 刷新系统配置 |
||||
*/ |
||||
static void saveSystemCurrentLanguage(Context context, Configuration newConfig) { |
||||
|
||||
SPUtil.getInstance(context).setSystemCurrentLocal(MultiLanguage.getSystemLocal(newConfig)); |
||||
} |
||||
|
||||
public static void saveSelectLanguage(Context context, int select) { |
||||
SPUtil.getInstance(context).saveLanguage(select); |
||||
MultiLanguage.setApplicationLanguage(context); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,46 @@ |
||||
package com.community.pocket.util; |
||||
|
||||
import com.community.pocket.R; |
||||
|
||||
import java.util.Locale; |
||||
|
||||
//语言类型
|
||||
public enum LocaleType { |
||||
auto(Locale.ENGLISH, 0, R.string.language_auto), |
||||
chs(Locale.CHINA, 1, R.string.language_chs), |
||||
en(Locale.ENGLISH, 2, R.string.language_en); |
||||
|
||||
//语言
|
||||
private Locale locale; |
||||
//类型值
|
||||
private int type; |
||||
//选项名对应的资源id
|
||||
private int resId; |
||||
|
||||
public Locale getLocale() { |
||||
return locale; |
||||
} |
||||
|
||||
public int getType() { |
||||
return type; |
||||
} |
||||
|
||||
public int getResId() { |
||||
return resId; |
||||
} |
||||
|
||||
LocaleType(Locale locale, int type, int resId) { |
||||
this.locale = locale; |
||||
this.type = type; |
||||
this.resId = resId; |
||||
} |
||||
|
||||
public static LocaleType getLocale(int type) { |
||||
for (LocaleType t : LocaleType.values()) { |
||||
if (t.type == type) { |
||||
return t; |
||||
} |
||||
} |
||||
return LocaleType.auto; |
||||
} |
||||
} |
@ -0,0 +1,48 @@ |
||||
package com.community.pocket.util; |
||||
|
||||
import java.io.InputStream; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
import java.util.Properties; |
||||
|
||||
//读取配置文件工具类
|
||||
public class PropertiesUtil { |
||||
|
||||
private static Properties properties; |
||||
|
||||
private final static Map<String, String> values = new HashMap<>(); |
||||
|
||||
// 文件路径
|
||||
private static final String filePath = "/assets/config.properties"; |
||||
|
||||
static { |
||||
properties = new Properties(); |
||||
try { |
||||
InputStream is = PropertiesUtil.class.getResourceAsStream(filePath); |
||||
properties.load(is); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
//获取字符串配置
|
||||
private static String getValue(String key) { |
||||
if (values.containsKey(key)) { |
||||
return values.get(key); |
||||
} else { |
||||
String value = properties.getProperty(key); |
||||
values.put(key, value); |
||||
return value; |
||||
} |
||||
} |
||||
|
||||
// 获取整数配置
|
||||
public static int getIntValue(String key) { |
||||
String value = getValue(key); |
||||
if (value.matches("\\d+")) { |
||||
return Integer.parseInt(value); |
||||
} else { |
||||
throw new RuntimeException("值转换异常!无法把" + key + "=" + value + "转化成整数"); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,56 @@ |
||||
package com.community.pocket.util; |
||||
|
||||
import android.content.Context; |
||||
import android.content.SharedPreferences; |
||||
|
||||
import java.util.Locale; |
||||
|
||||
/** |
||||
* 界面语言配置读写 |
||||
*/ |
||||
public class SPUtil { |
||||
|
||||
private final String SP_NAME = "language_setting"; |
||||
private final String TAG_LANGUAGE = "language_select"; |
||||
private static volatile SPUtil instance; |
||||
|
||||
private final SharedPreferences mSharedPreferences; |
||||
|
||||
private Locale systemCurrentLocal = Locale.ENGLISH; |
||||
|
||||
|
||||
private SPUtil(Context context) { |
||||
mSharedPreferences = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); |
||||
} |
||||
|
||||
|
||||
void saveLanguage(int select) { |
||||
SharedPreferences.Editor edit = mSharedPreferences.edit(); |
||||
edit.putInt(TAG_LANGUAGE, select); |
||||
edit.apply(); |
||||
} |
||||
|
||||
public int getSelectLanguage() { |
||||
return mSharedPreferences.getInt(TAG_LANGUAGE, 0); |
||||
} |
||||
|
||||
|
||||
Locale getSystemCurrentLocal() { |
||||
return systemCurrentLocal; |
||||
} |
||||
|
||||
void setSystemCurrentLocal(Locale local) { |
||||
systemCurrentLocal = local; |
||||
} |
||||
|
||||
public static SPUtil getInstance(Context context) { |
||||
if (instance == null) { |
||||
synchronized (SPUtil.class) { |
||||
if (instance == null) { |
||||
instance = new SPUtil(context); |
||||
} |
||||
} |
||||
} |
||||
return instance; |
||||
} |
||||
} |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<full-backup-content> |
||||
<include |
||||
domain="sharedpref" |
||||
path="." /> |
||||
</full-backup-content> |
Loading…
Reference in new issue