一、概述

  在界面设计中需要根据用户操作显示提示信息、出错信息等,就要用到对话框。Android实现提示信息显示常用有两种方式

  1、Toast

  2、AlertDialog

二、Toast

  Android中用来显示显示信息的一种机制,属于轻量级消息开发中使用频率很高。其特点

    1、 不接受用户操作,没有焦点

    2、 显示的时间有限,过一定的时间就会自动消失。

  使用Toast显示信息非常简单,操作如下:

Toast toast=Toast.makeText(this, “数据加载完成”, Toast.LENGTH_LONG);//创建Toast

toast.show();//显示消息

  普通的Toast外观很简单,我们也可以根据需要定制Toast,如新闻头条中实现收藏和取消收藏的信息提示,如图所示效果

  定制Toast主要有两个方面

    1、 定制Toast的外观

    2、 设置Toast在屏幕位置

  实现定制Toast关键代码如下:

Toast  toast = Toast.makeText(context, msg, Toast.LENGTH_LONG); //创建Toast
int offsetX = 0;
int offsetY = 0;
toast.setGravity(Gravity.BOTTOM, offsetX, offsetY);//设置位置
LinearLayout ll=LayoutInflater.from(context).inflate(R.Layout.custom_toast,null);
toast.setView(ll);//设置外观
toast.show();

  上述案例实现完成代码如下:

1、CustomToastActivity:

private Button  btCollect;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.custom_toast_activity);
initView();
}
private void initView(){
btCollect=(Button)super.findViewById(R.id.btCollect);
btCollect.setOnClickListener(this);
} private void showToast(String txt){
Toast tast=Toast.makeText(this, txt, Toast.LENGTH_LONG);
tast.setGravity(Gravity.CENTER, 0, 0);
View view=LayoutInflater.from(this).inflate(R.layout.custom_toast, null);
TextView tvMsg=(TextView)view.findViewById(R.id.tvMsg);
tvMsg.setText(txt);
tast.setView(view);
tast.show();
}
public void onClick(View view) {
String txtCollect=btCollect.getText().toString();
if(txtCollect.equals("收藏")){
btCollect.setText("取消收藏");
showToast("收藏成功");
}else{
btCollect.setText("收藏");
showToast("取消收藏");
}
}

2 、custom_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:padding="10dp"
android:layout_height="match_parent" android:background="@drawable/toast_shape" >
<TextView
android:id="@+id/tvImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60sp"
android:text="★"
android:textColor="@color/white"
android:layout_centerHorizontal="true"
>
</TextView> <TextView
android:id="@+id/tvMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28sp"
android:text="收藏成功"
android:textColor="@color/white"
android:layout_below="@+id/tvImg"
android:layout_centerHorizontal="true"
/> </RelativeLayout>

3、 toast_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#000000"></solid>
<corners android:radius="10dp"/>
</shape>
三、对话框

1、AlertDialog

  简单的一种对话框,主要的目的是为用户显示一条警告信息,通过AlertDialog.Builder产生AlertDialog,主要代码如下:

Dialog dialog = new AlertDialog.Builder(this)
.setTitle("对话框") // 设置标题
.setMessage("显示提示信息。") // 显示信息
.setIcon(R.drawable.pic_m) // 设置显示的Icon
setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}) //设置按钮
.create(); // 创建Dialog
dialog.show(); // 显示对话框

其他主要方法:
setView : 给对话框设置自定义样式

setItems :设置对话框要显示的一个list,一般用于显示几个命令时

setSingleChoiceItems:用来设置对话框显示一系列的单选框

setMultiChoiceItems :用来设置对话框显示一系列的复选框

setNeutralButton    :普通按钮

setPositiveButton   :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮

create : 创建对话框
show :显示对话框

2、定制AlertDialog

  主要使用getWindow().setContentView()设置外观,如实现退出应用对话框

  Activity——CustomAlertDialog代码:

private void showExitDialog(){
final AlertDialog exitDlg=new AlertDialog.Builder(this).create();
exitDlg.show();//在添加内容之前执行
Window win=exitDlg.getWindow();
  // 设置窗口的内容页面,为exit_dlg_layout.xml文件中定义view内容
win.setContentView(R.layout.exit_dlg_layout);
TextView tvMsg=(TextView)win.findViewById(R.id.tvMsg);
tvMsg.setText("要退出应用吗?");
Button btOk=(Button)win.findViewById(R.id.btOk);
Button btCancel=(Button)win.findViewById(R.id.btCancel);
  // 为确认按钮添加事件,执行退出应用操作
btCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
exitDlg.dismiss();// 关闭对话框
}
});
btOk.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
finish();
exitDlg.dismiss();// 关闭对话框
}
});
}
public void onBackPressed(){//按回退键调用
showExitDialog();
}

  exit_dlg_layout.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:padding="10dp">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content" android:orientation="vertical"
android:background="@drawable/exit_dlg_shape"
android:padding="5dp">
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"
android:textSize="20sp"
android:text="温馨提示"
android:textColor="#000000" />
<LinearLayout android:layout_width="match_parent"
android:layout_height="100dp" android:orientation="vertical" android:background="#ffffff">
<TextView
android:id="@+id/tvMsg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:padding="5dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:padding="5dp"
android:layout_height="40dp" android:orientation="horizontal">
<Button
android:id="@+id/btOk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"
android:layout_weight="1"
android:background="@drawable/comm_shop_detail_top_green"
android:layout_marginRight="2dp" />
<Button
android:id="@+id/btCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:layout_weight="1"
android:background="@drawable/comm_shop_detail_top_black"
/>
</LinearLayout>
</LinearLayout> </RelativeLayout>
作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

Android界面设计之对话框——定制Toast、AlertDialog的更多相关文章

  1. android 界面设计基本知识Ⅲ

    本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...

  2. android界面设计之布局管理

    谈到android界面设计,各种布局样式不得不提!传统的布局方式有6种,我们会一一介绍. 在android studio2.2版本之后出现了一款超棒的布局方式,真正意义上的所见即所得,后面我们也会讲到 ...

  3. Android界面设计适配不同屏幕的尺寸和密度解读

    Android是运行在各种提供不同的屏幕尺寸和密度的设备.Android系统提供跨设备的统一开发环境和处理大部分的工作,以调整每个应用程序的用户界面,以在其上显示的画面. 同时,该系统提供了API,允 ...

  4. android 界面设计基本知识Ⅱ

    上一章讲述了Android界面设计时,一些基本控件的使用,本章主要讲述自定义控件,Fragment和Headler线程机制. 1.自定义控件 (1)基本知识 dp.sp和dx      px:像素点  ...

  5. 让你大开眼界的10款Android界面设计

    根据调查显示, iOS与Android的市场份额差距正越来越大.Android设备正在成为手机应用市场的主力军.如何从设计层面创造一个优美的app界面来吸引用户已然成为广大App开发者们必做的功课之一 ...

  6. android 界面设计基本知识

    一个好的APP不仅有美观,好看的界面,更需要良好的性能和稳定性.作为一名开发人员,需要理解界面设计原则并写出优秀的界面设计代码. 本章主要讲述基本控件的使用,界面布局及一些常用的界面设计属性. 1.常 ...

  7. 第三篇-以LinearLayout进行Android界面设计

    一.新建一个项目 选择empty activity,此时项目里面没有main.java的文件. 二.手动创建java文件 Project那儿选择android模式,在app/java/com....一 ...

  8. 第四篇-以ConstraintLayout进行Android界面设计

    此文章基于第三篇. 一.新建一个layout.xml文件,创建方法不再赘述,在Design界面右击LinearLayout,点击Convert LinearLayout to ConstraintLa ...

  9. android 界面设计

    wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetric ...

随机推荐

  1. hdu 2275 Kiki & Little Kiki 1 水题

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2275 这个题比较简单,所以就没有测试样例提供给大家,基本把题目的样例过了就可以了 题目大意 给你一串操作, ...

  2. awk 提取列

    awk '{OFS="";print(substr($0,1,6),substr($0,74,18),substr($0,15,3),substr($0,18,8))}' inpu ...

  3. 【SQL】183. Customers Who Never Order

    Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL qu ...

  4. Kubernetes1.3:POD生命周期管理

    转:http://blog.csdn.net/horsefoot/article/details/52324830 (一)  核心概念 Pod是kubernetes中的核心概念,kubernetes对 ...

  5. 从数组中查看某值是否存在,Arrays.binarySearch

    Arrays.binarySearch为二分法查询,注意:需要排序 使用示例 Arrays.binarySearch(selectedRows, i) >= 0

  6. Codeforces Round #222 (Div. 1) A. Maze dfs

    A. Maze 题目连接: http://codeforces.com/contest/377/problem/A Description Pavel loves grid mazes. A grid ...

  7. 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...

  8. QN-H618 遥控器复制再生仪(拷贝机)

    针对现在市场上日益更新的遥控器种类,本公司经过长时间的研究,推出新一代拷贝机,本产品有以下特点: 1. 众多车库门遥控分析信息被集成在一台机器内,只要一种遥控器,就可以复制众多品牌的车库遥控.免去积压 ...

  9. 浅析OpenGL光照

    浅析OpenGL光照 之前从来都没有涉及光照的内容,心想只要能通过常规的方法渲染出几何体甚至是模型就可以了,然而没有光照的日子注定是苦涩的,因为仅凭几何体和模型的颜色无法达到真是渲染的效果,在实际中有 ...

  10. C/C++ 函数指针 总结

    什么是函数指针 就像某一变量的地址可以存储在相应的指针变量中一样,指向函数的指针中保存着函数代码起始处的地址 函数指针的声明 当声明一个函数指针时,必须声明它指向的函数类型.要指定函数类型,就要指出函 ...