Android学习笔记之Toast与通知栏(Notification)

Toast

Toast会在屏幕的某一个位置弹出一个窗口,可以显示不同的信息,但是无法获得焦点且在一定的时间关闭。
写一个最简单的示例

Toast.makeText(this,"今天天气不错! \n 哈 ,哈, 哈",Toast.LENGTH_LONG).show();

这样就可以在屏幕的下方弹出一个窗口显示上面的信息。
当然也可以自定义一个。

View view = getLayoutInflater().inflater(R.layout.tosat,null);
Toast toast = new Toast(this);
//表示显示的时间 可以自己赋值int类型
toast.setDuration(Toast.LENGTH_LONG);
//Toast显示的位置
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setView(view);
toast.show();

这样在布局文件就可以自己定义显示内容了。使用new创建Toast是不能使用setText方法来设置文本信息的。

通知(Notification)

Notification可以在手机状态栏上显示信息。Notification需要用NotificationManager对象管理。可以通过Builder对象设置Notification各种信息。下面写一个完整的例子。
NotificationNotification大图

xml文件我就不贴出

public class MainActivity extends Activity implements View.OnClickListener{

    private NotificationManager mNotificationManager;
    private Button btn1,btn2,btn3,btn4,btn5,btn6;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获得操作Notification和NotificationManager对象
        mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        btn3 = (Button) findViewById(R.id.btn3);
        btn4 = (Button) findViewById(R.id.btn4);
        btn5 = (Button) findViewById(R.id.btn5);
        btn6 = (Button) findViewById(R.id.btn6);

        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
        btn5.setOnClickListener(this);
        btn6.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            //显示普通的Notification
            //普通的Notification,只包含标题,正文和左侧的一个小图标
            case R.id.btn1:
                //显示Notification,必须先创建一个Builder对象
                Notification.Builder builder = new Notification.Builder(this)
                        .setSmallIcon(R.drawable.weixiao).setContentTitle("简单的通知")
                        .setContentText("图标显示在左侧");
                //显示Notification
                //1,代表ID,每个Notification有着不同的ID
                mNotificationManager.notify(1,builder.build());
                break;
            //显示大图标Notification ,包含标题,正文内容,大图标和小图标
            case R.id.btn2:
                //从drawable资源创建封装大图标的Bitmap对象
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.xiao);
                //如果设置了大图标(调用setLargelcon方法),小图标就会显示在右下角,而大图标取代原来小图标位置
                Notification.Builder builder1 = new Notification.Builder(this)
                        .setSmallIcon(R.drawable.weixiao).setLargeIcon(bitmap)
                        .setContentText("大图标放在左侧,小图标在右侧").setContentTitle("大图标");
                mNotificationManager.notify(2,builder1.build());
                break;
            //显示大图Notification,任意尺寸的图像,但会受到手机硬件和Android系统的限制
            case R.id.btn3:
                //必须先清除大图Notification,否则再次显示会抛出异常。
                mNotificationManager.cancel(3);
                //从drawable资源创建封装大图标的Bitmap对象
                Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),R.drawable.lol);

                Notification notification = new Notification.BigPictureStyle(new Notification.Builder(this).setContentTitle("Big Picture")
                .setContentText("大图").setSmallIcon(R.drawable.small)).bigPicture(bitmap1).build();
                mNotificationManager.notify(3,notification);
                break;
            //显示带信息的Notification 右下角显示信息,俩个Notification
            case R.id.btn4:
                Notification.Builder builder2 = new Notification.Builder(this)
                        .setSmallIcon(R.drawable.weixiao).setContentInfo("信息")
                        .setContentText("文本信息显示在右下角").setContentTitle("Info");
                mNotificationManager.notify(4,builder2.build());
                //右下角显示数字(信息的特殊形式)
                Notification.Builder builder3 = new Notification.Builder(this)
                        .setSmallIcon(R.drawable.small).setNumber(25)
                        .setContentText("数字显示在右下角").setContentTitle("Number");
                mNotificationManager.notify(5,builder3.build());
                break;
            //显示带进度条的Notification ,进度条有俩个样式:显示确定的进度和不确定的进度
            case R.id.btn5:
                //显示确定进度的进度条 serProgress方法的第三个参赛必须为false
                //第一个参赛表示进度条的最大值,第二个值表示当前进度
                Notification.Builder builder4 = new Notification.Builder(this)
                        .setSmallIcon(R.drawable.xiao).setContentTitle("Determinate Progress")
                        .setContentText("显示进度的进度条").setProgress(100,25,false);
                mNotificationManager.notify(6,builder4.build());
                //显示不确定进度的进度条
                Notification.Builder builder5 = new Notification.Builder(this)
                        .setSmallIcon(R.drawable.weixiao).setContentTitle("Indeterminate Progress")
                        .setContentText("未显示进度的进度条").setProgress(100,25,true);
                mNotificationManager.notify(7,builder5.build());
                break;
            //清除所有的Notification
            case R.id.btn6:
                mNotificationManager.cancelAll();;
                break;
        }
    }
}

Notification可以永久存在的效果,只有添加setOngoing(true)就可以了。当然Notification也支持自定义,通过Notification.Builder.setContent方法自定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值