1.布局展示
1.1在标题栏设置控件
<ImageView
android:id="@+id/title_menu"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="35dp"
android:layout_gravity="center"
android:src="@mipmap/title_menu"/>
1.2 点击弹出布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="120dp"
android:layout_height="wrap_content">
<!-- <TextView-->
<!-- android:id="@+id/menu_language"-->
<!-- android:text="@string/menu_language"-->
<!-- android:textSize="20sp"-->
<!-- android:textColor="@color/black"-->
<!-- android:layout_margin="8dp"-->
<!-- android:gravity="center"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"/>-->
<TextView
android:id="@+id/menu_upgrade"
android:text="@string/menu_upgarde"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_margin="8dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#CCCCCC"/>
<TextView
android:id="@+id/menu_history"
android:text="@string/history"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_margin="8dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#CCCCCC"/>
<TextView
android:id="@+id/menu_setting"
android:text="设置"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_margin="8dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
- 实现函数
<style name="MenuDialog_Style" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<!-- 弹出框的背景色-->
<item name="android:windowBackground">#969696</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<!-- backgroundDimEnabled 除了弹出框,背景色模糊变暗-->
<item name="android:backgroundDimEnabled">false</item>
</style>
public class MenuDialog extends Dialog {
// private TextView mLanguage;
//点击事件监听器,用于调用实现接口函数
public OnUpgradeClickListener onUpgradeClickListener;
public OnHistoryClickListener onHistoryClickListener;
public OnSettingClickListener onSettingClickListener;
// public OnLanguageClickListener onLanguageClickListener;
//
//传递监听对象
// public void setOnLanguageClickListener(OnLanguageClickListener listener){
// onLanguageClickListener = listener;
// }
public void setOnHistoryClickListener(OnHistoryClickListener listener){
onHistoryClickListener = listener;
}
public void setOnUpgradeClickListener(OnUpgradeClickListener listener){
onUpgradeClickListener = listener;
}
public void setOnSettingClickListener(OnSettingClickListener listener){
onSettingClickListener = listener;
}
public MenuDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_content);
//初始化并设置点击事件传递至监听器调用实现接口函数
// mLanguage = findViewById(R.id.menu_language);
// mLanguage.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// onLanguageClickListener.onLanguageClick();
// }
// });
TextView mUpgrade = findViewById(R.id.menu_upgrade);
mUpgrade.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onUpgradeClickListener.onUpgradeClick();
}
});
TextView mHistory = findViewById(R.id.menu_history);
mHistory.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onHistoryClickListener.onHistoryClick();
}
});
TextView mSetting = findViewById(R.id.menu_setting);
mSetting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSettingClickListener.onSettingClick();
}
});
}
//设置监听实现接口函数
// public interface OnLanguageClickListener{
// public void onLanguageClick();
// }
public interface OnUpgradeClickListener{
public void onUpgradeClick();
}
public interface OnHistoryClickListener{
public void onHistoryClick();
}
public interface OnSettingClickListener{
public void onSettingClick();
}
}
mTitle_menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mMenuDialog = new MenuDialog(MainActivity.this,R.style.MenuDialog_Style);
Window window = mMenuDialog.getWindow();
window.setGravity(Gravity.TOP | Gravity.RIGHT); //设置弹出位置是右上角
WindowManager.LayoutParams params = window.getAttributes();
params.y = 175; //设置纵向偏移
window.setAttributes(params);
// //语言切换
// mMenuDialog.setOnLanguageClickListener(new MenuDialog.OnLanguageClickListener() {
// @Override
// public void onLanguageClick() {
// LanguageUtil.settingLanguage(MainActivity.this,LanguageUtil.getInstance());
// //activity活动重建
// recreate();
// mMenuDialog.dismiss();
// }
// });
//切换到升级模块
mMenuDialog.setOnUpgradeClickListener(new MenuDialog.OnUpgradeClickListener() {
@Override
public void onUpgradeClick() {
/*。。。。。*/
mMenuDialog.dismiss();
mUpgradeDialog.show();
}
});
//历史数据
mMenuDialog.setOnHistoryClickListener(new MenuDialog.OnHistoryClickListener() {
@Override
public void onHistoryClick() {
/*..................*/
mMenuDialog.dismiss();
}
});
//设置
mMenuDialog.setOnSettingClickListener(new MenuDialog.OnSettingClickListener() {
@Override
public void onSettingClick() {
/*.........................*/
mMenuDialog.dismiss();
}
});
mMenuDialog.show();
}
});
3.最终效果展示
。。。略