效果图
/drawable/dialog.bg.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#FFFFFF" /> <corners android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" android:topLeftRadius="10dp" android:topRightRadius="10dp" /> <stroke android:width="0.5dp" android:color="#0db09b"/> </shape>预览图是这样的
dialog.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/dialog_bg" android:clipChildren="false"> <LinearLayout android:id="@+id/dialog_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <!--android:background="?android:attr/colorBackgroundFloating"--> <FrameLayout android:id="@+id/desc_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="22dip" android:paddingRight="16dip" android:paddingTop="24dip"> <include layout="@layout/permission_description" /> </FrameLayout> <!--android:background="?android:attr/colorBackgroundFloating"--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="8dip" android:paddingLeft="22dip" android:paddingRight="16dip"> <CheckBox android:id="@+id/do_not_ask_checkbox" style="?android:attr/textAppearanceSmall" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="16dip" android:text="never_ask_again" android:visibility="gone"/> <RelativeLayout android:id="@+id/button_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="2dip" android:paddingTop="16dip"> <TextView android:id="@+id/current_page_text" style="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="4dp" android:paddingRight="12dp" android:text="ddddd" android:paddingTop="4dp" android:singleLine="true" android:textColor="?android:attr/textColorSecondary" android:visibility="invisible"/> <View android:id="@+id/spacer" android:layout_width="10dp" android:layout_centerInParent="true" android:layout_height="40dp" android:visibility="visible"/> <Button android:id="@+id/permission_deny_button" style="?android:attr/buttonBarButtonStyle" android:layout_toLeftOf="@+id/spacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/grant_dialog_button_deny"/> <Button android:id="@+id/permission_allow_button" style="?android:attr/buttonBarButtonStyle" android:layout_toRightOf="@+id/spacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dip" android:text="@string/grant_dialog_button_allow"/> </RelativeLayout> </LinearLayout> </LinearLayout> </LinearLayout>
activivity
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.view.MotionEvent; import android.view.View; import android.widget.Button; /** * Created by david on 2016/5/4. */ public class PermissDialogActivitys extends Activity { public boolean isExitAll = false; public String packagename = null; private Button mAllowButton; private ButtonBarLayout mButtonBar; private boolean mObscuredTouch; public boolean isObscuredTouch() { return mObscuredTouch; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_permission_dialog); MyApplication.getInstance().addActivity(this); initView(); isExitAll = getIntent().getBooleanExtra("isExitAll_set", false); packagename = getIntent().getStringExtra("setting_packaname"); } private void initView(){ // mButtonBar = (ButtonBarLayout) findViewById(R.id.button_group); // mButtonBar.setAllowStacking(true); mAllowButton = (Button) findViewById(R.id.permission_allow_button); mAllowButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startAppSettings(); } }); findViewById(R.id.permission_deny_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(isExitAll){ MyApplication.getInstance().exitAllActivity(); } else { finish(); } } }); } @Override public boolean dispatchTouchEvent(MotionEvent event) { mObscuredTouch = (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0; return super.dispatchTouchEvent(event); } // 启动应用的设置 private void startAppSettings() { if(packagename == null) finish(); Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packagename)); startActivity(intent); } }
manifest
<activity android:name=".activity.PermissDialogActivitys" android:screenOrientation="portrait" android:theme="@style/HomeDialogActivityTheme"/>
theme是这样的
/values/styles.xml
<style name="HomeDialogActivityTheme"> <item name="android:windowFrame">@null</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:background">@android:color/transparent</item> <item name="android:backgroundDimAmount">0.6</item> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation</item> </style>
git上看到的一个demo,随手写下
https://github.com/doubijuan/DialogActivityDome