把Activity当做dialog对话框使用

1、引言

        在安卓开发中对话框的使用是不可避免的,但是原生的对话框用起来总感觉差点意思,而且位置不好控制,在与界面的交互上也不够灵活,没有像activity那样的生命周期方法,以至于某些特殊的功能无法实现。此时我们就希望有一种组件能代替对话框的作用,并且有各式各样的生命周期方法,便于控制,针对这种情况我们可以考虑把activity转化为对话框,接下来就以此为例,简单演示如何使用activity类型的对话框。

2、继承于activity类

        被当做对话框使用的activity,必须继承于activity类,不能继承AppCompatActivity类,否则会直接报错。

3、设置并配置主题

        要想把activity当做对话框使用,还必须为其配置主题并在配置文件中引用该主题,相关代码如下:

3.1、activity的主题代码


    

3.2、activity的配置代码




    
        
        
            
                

                
            
        
    

3.3、主界面布局



    

3.4、主界面代码

package xyz.dritrtj.dialog;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private Button btn_start;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_start = findViewById(R.id.btn_start);
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,DialogActivity.class));
            }
        });
    }
}

3.5、activity对话框布局



    

3.6、activity对话框代码

package xyz.dritrtj.dialog;

import android.app.Activity;
import android.os.Bundle;

public class DialogActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    }
}

4、效果

4.1、真机效果

把Activity当做dialog对话框使用_第1张图片

 4.2、模拟器效果

把Activity当做dialog对话框使用_第2张图片

5、总结

        模拟器上显示背景是黑色的这个不用管,只要在真机上显示没问题就行了,由于这里已经把activity转化为对话框使用,因此被当做对话框的activity不能操作状态栏,其它操作和普通activity一样。

你可能感兴趣的:(android,activity类型对话框)