平时我们开发的大多数的Android、iOS的APP,它们的风格都是拟物化设计。如今Android 4.X、iOS 7、WP8采用的是扁平化设计,可以看出扁平化设计是未来UI设计的趋势。其实扁平化设计要比拟物化设计要简单一点,扁平化设计更加的简约,给人视觉上更加舒服。


Shamoo想到在Android平台上弄一个扁平化的对话框。参考过一篇帖子,然后改了一下。

这个Demo比较简单,首先是一个dialog的布局文件,这个dialog的布局要实例化成对话框可以通过AlertDialog.Builder的setView方法,将LayoutInflater实例化的dialog布局设置对话框具体显示内容。效果图如下:

Android自定义扁平化对话框

下面直接贴代码

DialogWindows.java

package com.example.dialogwindows;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.Context;import android.content.Intent;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.Toast;public class DialogWindows extends Activity {private Button button;private View dialogView;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.btn);button.setOnClickListener(new OnClickListener() {public void onClick(View v) {Builder builder = myBuilder(DialogWindows.this);final AlertDialog dialog = builder.show();                //点击屏幕外侧,dialog不消失dialog.setCanceledOnTouchOutside(false);Button btnOK = (Button) dialogView.findViewById(R.id.btn_ok);btnOK.setOnClickListener(new OnClickListener() {public void onClick(View v) {Toast.makeText(DialogWindows.this, "你点击了确定按钮", Toast.LENGTH_SHORT).show();dialog.dismiss();}});Button btnCancel = (Button) dialogView.findViewById(R.id.btn_cancel);btnCancel.setOnClickListener(new OnClickListener() {public void onClick(View v) {Toast.makeText(DialogWindows.this, "你点击了取消按钮", Toast.LENGTH_SHORT).show();dialog.dismiss();}});ImageButton customviewtvimgCancel = (ImageButton) dialogView.findViewById(R.id.btn_exit);customviewtvimgCancel.setOnClickListener(new OnClickListener() {public void onClick(View v) {Toast.makeText(DialogWindows.this, "你点击了退出按钮", Toast.LENGTH_SHORT).show();    dialog.dismiss();}});}});}protected Builder myBuilder(Context context) {LayoutInflater inflater = getLayoutInflater();AlertDialog.Builder builder = new AlertDialog.Builder(context);dialogView = inflater.inflate(R.layout.dialog, null);return builder.setView(dialogView);}}


dialog.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <!-- 标题栏 -->    <RelativeLayout        android:id="@+id/dialog_title"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#1A94F9" >        <TextView            android:id="@+id/tv_title"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:padding="10dp"            android:text="@string/about"            android:textColor="#000000" />        <ImageButton            android:id="@+id/btn_exit"            android:layout_width="40dp"            android:layout_height="40dp"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:background="@drawable/canceltor" />    </RelativeLayout>    <!-- 显示的内容 -->    <LinearLayout        android:id="@+id/dialog_msg"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        android:layout_below="@id/dialog_title"        android:padding="20dp" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/author"            android:textColor="#ffffff" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:linksClickable="true"            android:text="@string/blog"            android:textColor="#ffffff" />    </LinearLayout>    <!-- 底部按钮 -->    <LinearLayout        android:id="@+id/customviewlayLink"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@id/dialog_msg"        android:orientation="horizontal"        android:paddingLeft="20dp"        android:paddingRight="20dp"        android:paddingBottom="20dp" >        <Button            android:id="@+id/btn_ok"            android:layout_width="fill_parent"            android:layout_height="40dp"            android:background="@drawable/linkbtnbged"            android:linksClickable="true"            android:layout_weight="1"            android:layout_marginRight="10dp"            android:text="@string/btn_ok" />        <Button            android:id="@+id/btn_cancel"            android:layout_width="fill_parent"            android:layout_height="40dp"            android:linksClickable="true"            android:background="@drawable/linkbtnbged"            android:text="@string/btn_cancel"             android:layout_marginLeft="10dp"            android:layout_weight="1" />    </LinearLayout></RelativeLayout>


main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="@string/show_dialog" /></RelativeLayout>


更多相关文章

  1. Android弹出键盘布局闪动原理和解决
  2. Android 盘点所有Dialog 对话框 大合集 详解
  3. Android横竖屏布局总结
  4. 编写Android自定义按钮
  5. Android Relative Layout 安卓相对布局详解
  6. Android 中LayoutInflater(布局加载器)之源码篇
  7. Android 中LayoutInflater(布局加载器)之实战篇
  8. 无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、
  9. Android布局之相对布局——RelativeLayout

随机推荐

  1. Using cygwin with the Android(安卓)NDK
  2. andorid webview
  3. Android(安卓)APK反编译详解(附图)
  4. Android拍照
  5. Android两种计步器sensor
  6. Android点击通知栏返回正在运行的Activit
  7. Android与(Servlet)服务器交互
  8. Android(安卓)实现Activity后台运行
  9. Android(安卓)同个TextView设置字体大小
  10. Android(安卓)HTTP GET/POST