dialog快速实现,无需继承Dialog类,实现播放视频!

简介: dialog快速实现,无需继承Dialog类,实现播放视频!
不需要继承Dialog类,快速的实现一个dialog对话框。


一,dialog的快速实现


1,dialog的布局,这是必不可少的,


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="600dp"
    android:layout_height="wrap_content"
    android:background="#dfdfdf"
    android:orientation="vertical">
    <TextView
        android:layout_width="600dp"
        android:layout_height="50dp"
        android:text="小车账户充值"
        android:textSize="30sp"
        android:textStyle="bold"
        android:gravity="center"
        android:textColor="#000"
        android:background="#999"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="50dp"
        android:layout_gravity="center_horizontal">
        <TextView
            android:id="@+id/a43_d_car"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="车牌号:"
            android:textSize="30sp"
            android:textStyle="bold"
            android:textColor="#000" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:text="充值金额:"
                android:textSize="30sp"
                android:textStyle="bold"
                android:gravity="center"
                android:textColor="#000" />
            <EditText
                android:id="@+id/a43_d_edit"
                android:layout_width="200dp"
                android:layout_height="match_parent"
                android:inputType="number"
                android:maxLength="3"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginTop="50dp"
            android:gravity="center">
            <Button
                android:id="@+id/a43_d_chongzhi"
                android:layout_width="150dp"
                android:layout_height="match_parent"
                android:text="充值"
                android:textSize="25sp"
                android:textColor="#000"/>
            <Button
                android:id="@+id/a43_d_quxioa"
                android:layout_width="150dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="50dp"
                android:text="取消"
                android:textSize="25sp"
                android:textColor="#000"/>
        </LinearLayout>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="50dp" />
    </LinearLayout>
</LinearLayout>


2d65d23f6d4748949b924e4057485923.png


这是一个dialog布局,最上面是一个title,然后下面就是一些控件,没什么可说的。


2,在某个事件中,弹出dialog,实现对应的功能。


Button btn = convertView.findViewById(R.id.a43_chongzhi);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //加载dialog布局
                    View view = View.inflate(A43.this,R.layout.a43_dialog,null);
                   //创建dialog对象
                    dialog = new Dialog(A43.this);
                   //去掉标题栏,使用我们自定义的
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                   //加载视图
                    dialog.setContentView(view);
                    //弹出对话框
                    dialog.show();
                    //获取对话框中的控件,实现相应的功能,
                    final EditText edit = view.findViewById(R.id.a43_d_edit);
                    Button btn = view.findViewById(R.id.a43_d_chongzhi);
                    Button quxioa = view.findViewById(R.id.a43_d_quxioa);
                    TextView title = view.findViewById(R.id.a43_d_car);
                    title.setText("车牌号:"+position+1);
                    quxioa.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                    btn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            int money = Integer.parseInt(edit.getText().toString().trim());
                            upData(position+1,money);
                        }
                    });
                }
            });
    //这里是一个网络请求,用来从服务器拿到数据。        
    private void upData(int i, int money) {
        String url = "http://192.168.1.104:8088/transportservice/action/SetCarAccountRecharge.do";
        String post = "{\"CarId\":"+i+",\"Money\":"+money+", \"UserName\":\"user1\"}";
        http.post(url, post, new Http.onReqeust() {
            @Override
            public void onReqsult(String str) {
                try {
                    JSONObject object = new JSONObject(str);
                   if (object.optString("RESULT").equals("S")){
                       Toast.makeText(A43.this, "充值成功", Toast.LENGTH_SHORT).show();
                       reqeust();
                       dialog.dismiss();
                   }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
    }

4cebaac233b3433da32a72337a77fc60.png

6de278e6d6694ce5bb08e7e842b7e74b.png

简单的说一下,就是加载视图,创建dialog对象,弹出dialog,最后根据加载的视图就可以拿到dialog中的控件,进行逻辑的处理。


二,使用dialog快速播放视频.


直接上代码,这个连布局都不用写。


layout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //创建VideoView对象,
                    VideoView videoView = new VideoView(A30.this);
                   //设置视频路径
                    videoView.setVideoURI(Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.movie));
                    //创建dialog对象
                    Dialog dialog = new Dialog(A30.this);
                   //去掉标题栏
                    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                   //将VideoView传入
                    dialog.setContentView(videoView);
                    //设置dialog的窗口位置和大小,这里没怎么设置,
                    Window window = dialog.getWindow();
                    WindowManager.LayoutParams params = window.getAttributes();
                    params.dimAmount = 0;
                    window.setAttributes(params);
                    //弹出dialog,
                    dialog.show();
                    //播放视频
                    videoView.start();
                }
            });


首先创建VideoView的对象,然后扔进dailog中,然后设置dialog的窗口位置和大小,最后弹出对话框,播放视频。


效果如图:


0a2653c851af460fa595bd959398a8f1.png

如有错误还请指出,谢谢!


相关文章
|
6月前
|
Java 开发工具 Android开发
如何访问 android系统hide的类或接口
如何访问 android系统hide的类或接口
267 1
|
API Android开发 容器
Flutter控件之基类Widget封装
基类的Widget主要确定以下几个方面,第一就是,自定义一个抽象类还是非抽象类,第二、继承方式,采取有状态还是无状态,第三、关于组件的点击方式,如何进行实现。
161 0
|
Android开发
android 自定义登陆对话框基类封装,且随着软键盘的弹起自动移动位置
android 自定义登陆对话框基类封装,且随着软键盘的弹起自动移动位置
|
Java Android开发
三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现
三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现
892 0
三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现
Qml-Dialog不能隐藏标题栏和按钮自定义
在项目中,需要弹出一个对话框来完成用户输入的功能,为了考虑界面的同一,这里需要将原生自带的标题栏隐藏掉,换成自己写的
578 0
|
Android开发
UI组件-ProgressBar及其子类
前言 余生希望你和让你快乐的那个人度过。 ProgressBar组件 进度条也是UI界面中一种常用的组件,Android支持多种风格的进度条,通过style属性可以为ProgressBar指定风格。
1257 0
|
XML Android开发 数据安全/隐私保护
UI组件-TextView及其子类
前言 时间就像海绵里的水,只要愿挤,总还是有的。 TextView组件 TextView直接继承了View,它的作用就是在界面上显示文本。 代码示例 效果 Screenshot_20171018-095040.png 提示 andriod:drawableBottom属性,在文本框内文本的底端绘制指定图像。
1144 0