android开发之登录ProgressDialog

啥叫,上来就是干!不多说,直接上图:
android开发之登录ProgressDialog_第1张图片
第一步:创建Dialog类

public class LoginDialog {
    private Dialog dialog;
    public LoginDialog(Context context){
            dialog = new Dialog(context,R.style.MyDialog);
            dialog.setContentView(R.layout.activity_main);
            dialog.findViewById(R.id.dialog_button_cancel).setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
                dialog.dismiss();
            }
        });
    }

    public void dismiss() {
        dialog.dismiss();
    }
    public void show() {
        dialog.show();
    }
    public void setOk( View.OnClickListener listener) {
        dialog.findViewById(R.id.dialog_button_ok).setOnClickListener(listener);
    }
}

在上面的类当中,我们发现了未知的R.style.MyDialog和R.layout.activity_main !
那么,第二步:创建 /res/values/style_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="dialog_login_title_tv">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">?attr/textcolor_category_recorded_gv_tv</item>
        <item name="android:textSize">@dimen/size_19dp</item>
        <item name="android:gravity">center_vertical</item>
    </style>

    <style name="dialog_login_prompt_tv">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">?attr/textColor_category_recorded</item>
        <item name="android:textSize">@dimen/size_17dp</item>
        <item name="android:gravity">center_vertical</item>
    </style>

    <style name="dialog_login_btn_tv">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:textColor">?attr/dialog_login_btn</item>
        <item name="android:textSize">@dimen/size_17dp</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_gravity">center</item>
    </style>

    <style name="MyDialog" parent="android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/dialog_login_shape</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>
</resources>

接下来,就先来聊聊上面代码中,出现的未知的代码:?attr/dialog_login_btn 、 ?attr/textColor_category_recorded 和 ?attr/textcolor_category_recorded_gv_tv:
第三步:创建 /res/values/attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="textcolor_category_recorded_gv_tv" format="reference|color"/>
    <attr name="textColor_category_recorded" format="reference|color"></attr>
    <attr name="dialog_login_btn" format="reference|color" />
</resources>

因为是在style_layout.xml文件中配置的样式,因此还得在/res/values/style.xml文件中:

<style name="BrowsrThemeDefault" parent="@android:style/Theme.NoTitleBar">
        <item name="textcolor_category_recorded_gv_tv">#333333</item>
        <item name="textColor_category_recorded">#666666</item>
        <item name="dialog_login_btn">#17afe6</item>
</style>

这里的样式名称:BrowsrThemeDefault是我在清单文件中使用的样式;因此这些代码取决于我使用的是什么样式,并放在其中。

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/BrowsrThemeDefault" >

第四步:继续和大家说说activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/size_300dp" android:layout_height="@dimen/size_170dp" android:background="@drawable/dialog_login_shape" android:orientation="vertical">

    <LinearLayout android:layout_width="fill_parent" android:layout_height="80dp" android:orientation="vertical">
        <TextView style="@style/dialog_login_title_tv" android:layout_gravity="center" android:layout_marginTop="12dp" android:gravity="center" android:text="温馨提示"/>
        <TextView style="@style/dialog_login_prompt_tv" android:layout_gravity="center" android:layout_marginTop="@dimen/size_17dp" android:gravity="center" android:text="此功能需要您先登录之后才能使用哦!"/>
    </LinearLayout>

    <View  android:layout_width="fill_parent" android:layout_height="1dp" android:background="@color/color_bc" android:layout_marginTop="12dp"/>
    <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:weightSum="2">

        <TextView android:id="@+id/dialog_button_cancel" style="@style/dialog_login_btn_tv" android:layout_weight="1" android:text="@string/login_dialog_cancel_tv"/>
        <View  android:layout_width="1dp" android:layout_height="fill_parent" android:background="@color/color_bc"/>
        <TextView  android:id="@+id/dialog_button_ok" style="@style/dialog_login_btn_tv" android:layout_weight="1" android:text="@string/login_dialog_confirm_tv" />
    </LinearLayout>
</LinearLayout>

继续,解析activity_main.xml布局文件:
1.引用了 android:background=”@drawable/dialog_login_shape”

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <corners android:radius="5dp"/>
    <solid android:color="@color/color_ff"/>

</shape>

2.引用了 style=”@style/dialog_login_title_tv” 和 style=”@style/dialog_login_prompt_tv” 和 style=”@style/dialog_login_btn_tv”,这些样式都在style_layout.xml中已经定义好了.
3.引用了 colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="color_ff">#ffffff</color>
    <color name="color_bc">#bcbcbc</color>
</resources>

4.引用了dimens.xml

<resources>

    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>

    <dimen name="size_15dp">15dp</dimen>
    <dimen name="size_17dp">17dp</dimen>
    <dimen name="size_19dp">19dp</dimen>
    <dimen name="size_100dp">100dp</dimen>
    <dimen name="size_170dp">170dp</dimen>
    <dimen name="size_300dp">300dp</dimen>
</resources>

5.引用了strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Dialog</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

    <string name="login_dialog_cancel_tv">稍后再说</string>
    <string name="login_dialog_confirm_tv">立马登录</string>
</resources>

第五步:最后的使用:

LoginDialog loginDialog = new LoginDialog(MainActivity.this);
loginDialog.show();

详情请看:https://github.com/ZaneLove/LoginProgressDialog

你可能感兴趣的:(android,dialog,progress)