package com.community.pocket; import android.content.Context; import android.content.Intent; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import androidx.appcompat.widget.AppCompatSpinner; import com.community.pocket.data.adapter.LocaleAdapter; import com.community.pocket.ui.login.LoginActivity; import com.community.pocket.util.LocalManageUtil; import com.community.pocket.util.LocaleType; import com.community.pocket.util.SPUtil; /** * 自定义顶部标题栏 */ public class TitleBarView extends AppCompatSpinner { public TitleBarView(Context context) { super(context); init(null, 0); } public TitleBarView(Context context, AttributeSet attrs) { super(context, attrs); init(attrs, 0); } public TitleBarView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(attrs, defStyle); } private void init(AttributeSet attrs, int defStyle) { // Load attributes final TypedArray a = getContext().obtainStyledAttributes( attrs, R.styleable.TitleBarView, defStyle, 0); initSpanner(); a.recycle(); } private void initSpanner() { //加载语言选项 this.setAdapter(new LocaleAdapter(LayoutInflater.from(getContext()))); this.setSelection(SPUtil.getInstance(getContext()).getSelectLanguage()); // //选择语言事件 this.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { if (SPUtil.getInstance(getContext()).getSelectLanguage() != position) { LocaleType locale = LocaleType.getLocale(position); selectLanguage(locale); } } @Override public void onNothingSelected(AdapterView parent) { } }); } /** * 选择语言 * * @param locale 语言 */ private void selectLanguage(LocaleType locale) { LocalManageUtil.saveSelectLanguage(getContext(), locale.getType()); reStart(getContext()); } /** * 重启 * * @param context 应用上下文 */ public static void reStart(Context context) { Intent intent = new Intent(context, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }