第二章吸引你的眼球—UI编程(7) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

第二章吸引你的眼球—UI编程(7)

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:34

2.3 简单清楚明了的消息提示框(Toast)和对话框(Dialog)

2.3.1Toast提示


很多时刻,我们须要对用户供给一些提示信息。比如,当用户登入应用法度榜样时,提示用户“应用法度榜样须要更新”;当用户在输入框输入文本时,提示用户“最多能输入30个字符”。这些需求,Toast轻松就能搞定!
Toast是Android供给的“快显讯息”类。Toast应用起来异常简单,只须要简单的代码就能实现。

Toast.makeText(Context context, CharSequence text,int duration).show();

 
这里有三个参数,第一个为当前的Context;第二个为要显示的提示信息;第三个则为提示信息显示的时光周期,Toast中有两个静态常量LENGTH_LONG和LENGTH_SHORT。当然如不雅你已经把提示信息存入了资本文件中,则也可以用以下的代率攀来实现。

Toast.makeText(Context context,int resId,int duration).show();

 
其他参数不变,只是第二个参数改成了资本ID。
我们在一个叫ToastActivity的Activity中写一个简单的Toast提示来看看它的效不雅吧。

Toast.makeText(ToastActivity.this,
 "应用Toast提示", Toast.LENGTH_LONG).show();

 
效不雅如图2-20所示:
[img]http://img.blog.csdn.net/20150104092750465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
图2-20 Toast的应用

2.3.2Dialog提示


Toast的应用无疑是很便利的,然则有些时刻,Toast并不克不及知足我们的需求。因为可能我们并不仅仅知足于给用户提示一些信息,而是欲望给用户提示一些信息之后,用户可以有更多本身的选择。比如,当用户点击“退出”按钮的时刻,我们给用户提示“是否真的选择退出”,因为有可能“退出”按钮是用户不当心点击到的,当用户再点击“肯定”时,则真的退出应用;如不雅用户点击“撤消”则返回应用。如许的话,Toast就不克不及知足于如许的需求了,于是我们的Dialog对话框就呼之欲出了。
在Android中,我们要实现对话框可以应用AlertDialog.Builder类,也可以自定义对话框,下面我们分别经由过程一个例子来对它们加以解释。
 
1)应用AlertDialog.Builder类创建对话框
在应用这种方法创建对话框之前,我们先来懂得一下AlertDialog.Builder中几个常用的办法。

setTitile(); // 给对话框设置title
setIcon(); // 给对话框设置搁笔
setMessage(); // 给对话框设置提示信息
setPositiveButton(); // 给对话框添加“YES”按钮
setNeutralButton(); // 给对话框添加“NO”按钮

 
下面,我们就来创建一个对话框,弹出一个标题为“提示信息”,信息内容为“肯定退出吗”,并有一个“肯定”按钮和一个“撤消”按钮,并为“肯定”按钮添加事宜监听,代码如下:

new AlertDialog.Builder(this).setTitle("提示信息").
        setMessage("肯定退出吗").
        setPositiveButton("肯定", new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
                 finish();
             }
        }).
        setNegativeButton("撤消", null).
        show();

 
下面,我们来看看效不雅,如图2-21所示:
[img]http://img.blog.csdn.net/20150104092808436?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
图2-21AlertDialog的应用
 
固然我们没有对“撤消”按钮添加事宜监听,但在这个对话框中,当我们点击“撤消”按钮时,对话框一样会被封闭,这是因为setNegativeButton()默认就会封闭对话框。
2)自定义对话框
很多时刻,我们根据腥缬须要本身来设计对话框。下面,我们也以一个例子来看看自定义对话框是若何实现的。
起首,我们新建一个构造文件dialog.xml,并在个中定义好对话框:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView
            android:id="@+id/bg_pic"
            android:layout_width="260dp"
            android:layout_height="150dp"
            android:layout_centerHorizontal="true"
            android:background="@drawable/dialog_bg"/>
    <ImageView
            android:id="@+id/close_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignRight="@id/bg_pic"
            android:background="@drawable/close"/>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="自定义Dialog"
            android:textColor="@android:color/black"
            android:layout_centerInParent="true"/>
</RelativeLayout>

 
在这个对话框中,我们定义了一个Button,一个TextView。接下来,我们定义一个MyDialog持续自Dialog。

// import略
public class MyDialog extends Dialog{
 
    private LayoutInflater factory;
 
    public MyDialog(Activity act) {
        super(act);
        factory = LayoutInflater.from(act);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(factory.inflate(R.layout.dialog, null));
    }
}

 
然后,我们在一个Activity的onCreate办法中来看看效不雅吧:

new MyDialog(this).show();

 
效不雅如图2-22所示:
[img]http://img.blog.csdn.net/20150104092840046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
图2-22 自定义Dialog的应用
 
似乎并没有达到我们想要的效不雅,膳绫擎多出来了一块,并且外面也有边框,这些都不是我们想要的。这是因为这些都是Dialog默认的格局,如不雅我们不须要的话,我们须要为它添加我们本身的样式,我们在values目次下新建一个styles.xml样式文件,输入内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="mydialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>
</resources>

 
在这个样式傍边,第一个属性我们把Dialog设置为无title;第二个属性就是把边框设为透明,然后修改MyDialog的构造办法如下所示:

public MyDialog(Activity act) {
    super(act,R.style.mydialog);
    factory = LayoutInflater.from(act);
}

 
下面,我们再来看看效不雅,如图2-23所示:
[img]http://img.blog.csdn.net/20150104092839808?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
图2-23 自定义Dialog中使悠揭捉式
 
同样的,我们也可以在MyDialog中监听Diglog中组件的各类事宜进行响应的处理,例如,当点击“X”搁笔时封闭该Dialog:

ImageView closeView = (ImageView) findViewById(R.id.close_view);
closeView.setOnClickListener(new View.OnClickListener() {
   
    @Override
    public void onClick(View v) {
        MyDialog.this.dismiss();
    }
});

相关案例查看更多