Android implements iphone-style dialogs, mainly with the help of the Shape,corner element approach.
The following Circular_corner_dialog.xml file defines a rounded rectangle. The corner element specifies the fillet radius of the rounded rectangle, while the gradient element specifies the direction of the color gradient and the starting color. Of course, you can also use shape to create a variety of other shapes, such as ellipses, lines, and loops, and set different visual styles.
Res/drawable/circular_corner_dialog.xml
<?XML version= "1.0" encoding= "Utf-8"?><selectorxmlns:android= "Http://schemas.android.com/apk/res/android"> <Item> <Shape> <GradientAndroid:startcolor= "@android: Color/white"Android:endcolor= "@android: Color/white"> </Gradient> <CornersAndroid:topleftradius= "15DP"Android:toprightradius= "15DP"Android:bottomleftradius= "15DP"Android:bottomrightradius= "15DP"> </Corners> </Shape> </Item></selector>
Fragment_dialog_circular_corner.xml file when you customize the interface layout file of a dialog box mydialogfragment, when you create an Mydialogfragment instance, the interface layout is loaded.
Res/layout/fragment_dialog_circular_corner.xml
<?XML version= "1.0" encoding= "Utf-8"?><LinearLayoutxmlns:android= "Http://schemas.android.com/apk/res/android"android:orientation= "vertical"Android:layout_width= "Match_parent"Android:layout_height= "Match_parent"Android:background= "@android: Color/transparent"android:gravity= "Center" > <LinearLayoutAndroid:layout_width= "100DP"Android:layout_height= "100DP"android:orientation= "Horizontal"Android:background= "@drawable/circular_corner_dialog"android:layout_gravity= "Center"> <ButtonAndroid:layout_width= "Wrap_content"Android:layout_height= "Wrap_content" /> <ButtonAndroid:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:layout_marginleft= "10DP" /> </LinearLayout></LinearLayout>
The Fragment view container layout file for the main activity class myactivity.
Res/layout/activity_myactivity.xml
<? xml version= "1.0" encoding= "Utf-8" ?> < framelayout xmlns:android = "Http://schemas.android.com/apk/res/android" Android:orientation = "Vertical" Android:id = "@+id/fragment_container" Android:layout_width = "Match_parent" Android:layout_height = "Match_parent" ></ framelayout >
Customize the Fillet dialog box.
Src/.../mydialogfragment.java
ImportAndroid.graphics.Color;Importandroid.graphics.drawable.ColorDrawable;Importandroid.support.v4.app.DialogFragment;ImportAndroid.os.Bundle;Importandroid.support.annotation.Nullable;ImportAndroid.view.LayoutInflater;ImportAndroid.view.View;ImportAndroid.view.ViewGroup;ImportAndroid.view.Window; Public classMydialogfragmentextendsdialogfragment {view view; @Nullable @Override PublicView Oncreateview (layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) {Super. Oncreateview (Inflater, container, savedinstancestate); View=inflater.inflate (R.layout.fragment_dialog_circular_corner,container,false); Getdialog (). Requestwindowfeature (Window.feature_no_title); Getdialog (). GetWindow (). Setbackgrounddrawable (Newcolordrawable (color.transparent)); returnview; }}
The main activity class for managed fragment.
Src/.../myactivity.java
ImportAndroid.os.Bundle;Importandroid.support.v4.app.FragmentActivity;ImportCOM.KANEBAY.DCIDE.R; Public classMyActivityextendsfragmentactivity {Privatemydialogfragment mydialogfragment; @Override Public voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_login_notice); if(savedinstancestate==NULL){ //Getsupportfragmentmanager (). BeginTransaction (). Add (R.id.fragment_c Ontainer, Mydialogfragment). commit (); }Else{mydialogfragment=(mydialogfragment) Getsupportfragmentmanager (). Findfragmentbyid (R.id.fragment_container); } }}