activity設置成dialog 浮動窗口,樣式,可以完成dialog無法實現的功能,例如:它能懸浮在手機桌面,且不受Activity界面的影響,說明該懸浮窗口是不隸屬於Activity界面的,也就是說,他是隸屬於啓動它的應用程序所在進程。如360App所在的應用進程,當殺掉它所在的應用進程時,它纔會消失。
這樣做可在項目中任何地方隨意調用菜單,不依賴具體的activity,達到重用的目的
先上效果圖:
1.java代碼:
MenuActivity.java
package com.xiebao.aboutus;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import com.xiebao.R;
import com.xiebao.core.ToastUtils;
import com.xiebao.fatherclass.FatherActivity;
public class MenuActivity extends FatherActivity implements
View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.activity_menu_layout);
setWindowAttribute();
initView();
}
private void initView() {
TextView back = getView(R.id.back_home);
TextView about = getView(R.id.about_xiebao);
TextView help = getView(R.id.help_center);
TextView feed = getView(R.id.feed_back);
back.setOnClickListener(this);
about.setOnClickListener(this);
help.setOnClickListener(this);
feed.setOnClickListener(this);
}
/**
* 設置窗口屬性
*/
private void setWindowAttribute() {
if (Build.VERSION.SDK_INT >= 11) {
setFinishOnTouchOutside(true);
}
// int heighted = ScreenUtil.getViewHeight(shareLayout);
float mY = getResources().getDimension(R.dimen.common_top_bar_height);
Window window = getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
// 設置窗口的大小及透明度
// layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
// layoutParams.height = 48;
layoutParams.gravity = Gravity.RIGHT | Gravity.TOP;
layoutParams.y = (int) mY;
// layoutParams.alpha = 0.5f;
window.setAttributes(layoutParams);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.back_home:
break;
case R.id.about_xiebao:
break;
case R.id.help_center:
break;
case R.id.feed_back:
break;
default:
break;
}
finish();
ToastUtils.show(context, "nihao"+String.valueOf(v.getId()));
}
}
2.佈局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/menu_color"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/back_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/menu_backgroud_select"
android:gravity="center"
android:padding="10dp"
android:text="@string/back_text"
android:textColor="@color/white"
android:textSize="20sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider_color" />
<TextView
android:id="@+id/about_xiebao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/menu_backgroud_select"
android:gravity="center"
android:padding="10dp"
android:text="@string/about_xiebao"
android:textColor="@color/white"
android:textSize="20sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider_color" />
<TextView
android:id="@+id/help_center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/menu_backgroud_select"
android:gravity="center"
android:padding="10dp"
android:text="@string/help_center"
android:textColor="@color/white"
android:textSize="20sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider_color" />
<TextView
android:id="@+id/feed_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/menu_backgroud_select"
android:gravity="center"
android:padding="10dp"
android:text="@string/feed_back"
android:textColor="@color/white"
android:textSize="20sp" />
</LinearLayout>
3.activity的樣式文件:
<style name="activity_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!--邊框-->
<item name="android:windowIsFloating">true</item><!--是否浮現在activity之上-->
<item name="android:windowIsTranslucent">true</item><!--透明-->
<item name="android:windowNoTitle">true</item><!--無標題-->
<item name="android:windowBackground">@null</item><!--背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--此屬性可以翻譯爲 是否允許對話框的背景變暗-->
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
4.配置文件:
AndroidManifest.xml
<activity
android:name=".aboutus.MenuActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/activity_dialog" >
</activity>