Dialog续,Notification

Dialog

今天接着明天的Dialog,继续补充dialog的几个用法。

<1>弹出自定义的dialog

首先添加按钮

   <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="弹出自定义的dialog"
        android:layout_below="@+id/button4"/>

接下来布局弹出的框架内容

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/dialog_bg">//整体屏幕的背景

    <TextView
        android:id="@+id/textview_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="俺是标题哦"
        android:textColor="#f00"
        android:textSize="30dp"
        android:background="@drawable/dialog_title"/>//文本标题的背景调用文本标题的drawable

    <TextView
        android:id="@+id/textview_neirong"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="哥叫内容,懂吗!"
        android:textSize="20dp"
        android:padding="20dp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/button_cancle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_background"//取消键背景调用取消键的drawable
            android:text="取消" />

        <Button
            android:id="@+id/button_ok"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/right_background"//确定键的背景
            android:text="确定" />
    </LinearLayout>
</LinearLayout>

那么需要的drawable有哪些呢?
下面给出

//这个是取消键按之前的背景
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:bottomLeftRadius="@dimen/corners" />
    <solid android:color="#79DFF6" />
    <stroke
        android:width="1dp"
        android:color="@android:color/white" />
</shape>
————————————————————————————————
<shape 
//这个是按下之后的效果
xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:bottomLeftRadius="@dimen/corners" />
    <solid android:color="#79DFF6" />
    <stroke
        android:width="1dp"
        android:color="@android:color/white" />
</shape>
——————————————————————————————————————
//然后写item,将点击后的效果写在前面,这就是取消键的点击效果和背景
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_normal"/>
</selector>
————————————————————————————————————
//下面设计确定键
//按之前
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:bottomRightRadius="@dimen/corners" />
    <solid android:color="#79DFF6" />
    <stroke
        android:width="1dp"
        android:color="@android:color/white" />
</shape>
————————————————————————————
//按之后
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:bottomRightRadius="@dimen/corners" />
    <solid android:color="#79DFF6" />
    <stroke
        android:width="1dp"
        android:color="@android:color/white" />
</shape>
//item
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/right_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/right_normal"/>
</selector>
____________________
//标题区域的背景颜色
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:topLeftRadius="@dimen/corners"
        android:topRightRadius="@dimen/corners"/>
    <solid android:color="#ffffff" />//设置为白色
</shape>
——————————————————————————————————————
//整体的背景
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/corners" />
    <solid android:color="#ddcccc" />//整体颜色设置为灰粉色,只要没有被其他颜色代替的区域都是这个颜色
    <stroke
        android:width="2dp"
        android:color="@android:color/white" />//周围设置白色边框

</shape>

布局完的界面如下
这里写图片描述

activity中的方法

 public void showSelf() {
        dialog = new Dialog(MainActivity.this, R.style.NoDialogTitle);
        LayoutInflater inflater = getLayoutInflater();
        final View dialogView = inflater.inflate(R.layout.item_dialog, null);
        TextView textview_title = (TextView) dialogView.findViewById(R.id.textview_title);
        TextView textview_neirong = (TextView) dialogView.findViewById(R.id.textview_neirong);
        Button button_cancle = (Button) dialogView.findViewById(R.id.button_cancle);
        Button button_ok = (Button) dialogView.findViewById(R.id.button_ok);
        textview_title.setText("咱是新标题!");
        textview_neirong.setText("哥是新内容!");
        button_cancle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        button_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "点击了确定", Toast.LENGTH_LONG).show();
                dialog.dismiss();
            }
        });
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(dialogView);
        dialog.show();
    }

运行效果见下面视频
<2>弹出日期和时间的dialog
弹出日期的方法:

    public void showData() {
        mCalendar = Calendar.getInstance();
        DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                mCalendar.set(year, monthOfYear, dayOfMonth);
                SimpleDateFormat format = new SimpleDateFormat("yyy年MM月dd日");
                Toast.makeText(getApplicationContext(), "这个是造型的" + format.format(mCalendar.getTime()), Toast.LENGTH_LONG).show();
            }
        }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
        dialog.show();
    }

弹出时间的方法

 public void showTime() {
        mCalendar = Calendar.getInstance();
        TimePickerDialog dialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                mCalendar.set(Calendar.HOUR, hourOfDay);
                mCalendar.set(Calendar.MINUTE, minute);
                SimpleDateFormat format = new SimpleDateFormat("HH:mm");
                Toast.makeText(getApplicationContext(), "这个是造型的" + format.format(mCalendar.getTime()), Toast.LENGTH_LONG).show();
            }
        }, mCalendar.get(Calendar.HOUR), mCalendar.get(Calendar.MINUTE), true);
        dialog.show();
    }

<3>PopupWindow
layout下的item_popup.xml布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="鸡腿" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="烤鸭" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="香蕉" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="大龙虾" />

</LinearLayout>

activity中的方法

 case R.id.button1:
                mPopupWindow = new PopupWindow(MainActivity.this);
                View popview = getLayoutInflater().inflate(R.layout.item_popup, null);
                mPopupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
                mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
                mPopupWindow.setContentView(popview);
                mPopupWindow.setFocusable(false);
                mPopupWindow.setOutsideTouchable(true);
                mPopupWindow.showAsDropDown(mButton1);

综上dialog的实现效果如下所示:
这里写图片描述

Notification

用于消息提示,如手机屏幕上方的消息提示
<1>首先构建布局

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <Button//添加两个发送消息和取消消息的按钮
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发出消息" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="取消消息"
        android:layout_below="@+id/button1"/>


</RelativeLayout>

<2>activity中的方法

//这是发出消息
 Intent intent2 = new Intent(getApplicationContext(),MainActivity.class);//设置pengdingintent事件
                PendingIntent pend2 = PendingIntent.getActivity(getApplicationContext(),1,intent2,PendingIntent.FLAG_ONE_SHOT);
                Notification notification2 = new Notification.Builder(MainActivity.this).setSmallIcon(R.mipmap.ic_launcher).
                        setTicker("您有新的消息").setContentTitle("我是标题").setContentText("我是文本")
                        .setContentInfo("我是内容").setContentIntent(pend2).setAutoCancel(true).setWhen(System.currentTimeMillis()).build();

                mNotification.notify(2,notification2);

—————————————————————————— ——————————————————————————————
             mNotification.cancel(1);//这是取消消息

实现效果如下:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值