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);
        }
    }
}

Android用DialogFragment实现iphone样式的圆角对话框

时间: 2024-12-09 03:32:33

Android用DialogFragment实现iphone样式的圆角对话框的相关文章

Android给TextView设置透明背景、圆角边框

第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建text_view_border.xml [java] view plaincopy <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid an

Android学习系列(17)--App列表之圆角ListView(续)

http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html 本来这篇文章想并到上篇Android学习系列(16)--App列表之圆角ListView中的,但是若是如此就让大家错过一篇新的好的文章,着实可惜.上篇中我们使用shape,corners,gradient实现了一个渐变的圆角效果,但是在完文之后的实践中,我发现有时效果不甚满意,选中和放手的事件监听没有去正确的判断,然后渐变效果也比较单一,性能也觉得不是很快

Android仿微信UI布局视图(圆角布局的实现)

圆角按钮,或布局可以在xml文件中实现,但也可以使用图片直接达到所需的效果,以前版本的微信就使用了这种方法. 实现效果图:    不得不说,这种做法还是比较方便的. 源代码: MainActivity(没写任何代码,效果全在布局文件中实现): package com.android_settings; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

【Android 应用开发】 ActionBar 样式具体解释 -- 样式 主题 简单介绍 Actionbar 的 icon logo 标题 菜单样式改动

作者 : 万境绝尘 ([email protected]) 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/39269163 演示样例代码下载 : -- GitHub : https://github.com/han1202012/Octopus_ActionBarStyle.git -- CSDN : http://download.csdn.net/detail/han1202012/7926959 一. 样式 和 主题

【Android】 activity的dialog样式

<!-- activity无黑边 --> <!-- activity可滑动 --> <!-- activity透明 --> <!-- activity无标题 --> <!-- activity不变暗 --> <style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFr

Android 继承DialogFragment弹出dialog对话框一

相信现在Android软件开发员,都经常用到这种方式弹出对话框的.Android继承DialogFragment弹出dialog对话框,这样弹出有很多可以灵活处理地方,想什么启动,什么时候数据接口返回都可以,有自已layout布局,生命周期.下面看看我写demo. 本文代码下载:请点击这里 转载请注明出处: http://blog.csdn.net/qq_16064871 一.MainActivity package com.example.fragmentdialogdemo; import

【Android 应用开发】 ActionBar 样式详解 -- 样式 主题 简介 Actionbar 的 icon logo 标题 菜单样式修改

作者 : 万境绝尘 ([email protected]) 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/39269163 示例代码下载 : -- GitHub : https://github.com/han1202012/Octopus_ActionBarStyle.git -- CSDN : http://download.csdn.net/detail/han1202012/7926959 一. 样式 和 主题 资源

Android 使用Universal Image Loader绘制带圆角的图片(一)

Android 使用Universal Image Loader绘制带圆角的图片(一) 绘制带圆角的控件难吗?貌似不难.对于一个普通layout或者widget,要绘制圆角,只要把 background设置成下面这样的drawable就行了. <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/and