首页 > 代码库 > Android用DialogFragment实现iphone样式的圆角对话框
Android用DialogFragment实现iphone样式的圆角对话框
Android实现iphone样式的对话框,主要是借助shape,corner元素方法。
下面的circular_corner_dialog.xml文件定义了一个圆角矩形。corner元素指定了圆角矩形的圆角半径,而gradient元素则指定了色彩渐变的方向以及起始颜色。当然也可以使用shape创建其它各种图形,如椭圆、线条以及环等,并设置不同的视觉风格。
res/drawable/circular_corner_dialog.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:startColor="@android:color/white" android:endColor="@android:color/white"> </gradient> <corners android:topLeftRadius="15dp" android:topRightRadius="15dp" android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp"> </corners> </shape> </item></selector>
fragment_dialog_circular_corner.xml文件时自定义对话框MyDialogFragment的界面布局文件,创建MyDialogFragment实例时加载该界面布局。
res/layout/fragment_dialog_circular_corner.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns: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" > <LinearLayout android:layout_width="100dp" android:layout_height="100dp" android:orientation="horizontal" android:background="@drawable/circular_corner_dialog" android:layout_gravity="center"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" /> </LinearLayout></LinearLayout>
主Activity类MyActivity的fragment视图容器布局文件。
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>
自定义圆角对话框。
src/.../MyDialogFragment.java
import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.support.v4.app.DialogFragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;public class MyDialogFragment extends DialogFragment { View view; @Nullable @Override public View 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(new ColorDrawable(Color.TRANSPARENT)); return view; }}
托管Fragment的主Activity类。
src/.../MyActivity.java
import android.os.Bundle;import android.support.v4.app.FragmentActivity;import com.kanebay.dcide.R;public class MyActivity extends FragmentActivity { private MyDialogFragment myDialogFragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login_notice); if(savedInstanceState==null){ // getSupportFragmentManager() .beginTransaction() .add(R.id.fragment_container, myDialogFragment) .commit(); }else { myDialogFragment=(MyDialogFragment)getSupportFragmentManager() .findFragmentById(R.id.fragment_container); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。