第一步:创建一个ProgressActivty
第二步:创建一个自定义的style风格
在values文件夹下的styles文件中创建一个新的style节点
<style name="MyDialog">
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
其中
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowIsTranslucent">true</item>
这两个节点需要结合使用,设置窗口可以透明
这里需要创建一个自定义color属性,如果用transparent则是完全透明的,我们创建一个color设置为半透明的
在vaules文件加下创建color.xml文件
<resources>
<color name="transparent_background">#50000000</color>
</resources>
第三步:在配置文件中修改这个Activity的Style
调用自定义的style风格,这个activity就会半透明显示到另外一个activity上
<activity
android:name="com.example.day01_test.ProgressActivity"
android:theme="@style/MyDialog"
>
</activity>
第四步:在ProgressActivty编写逻辑
可以根据控件finish这个Activity,或者跳转到另外的Activity,同时要finish;
如果是进度条类型的话,需要在别的Activity中关闭这个Activity,需要在ProgressActivty中定义一个静态变量,然后用handler进行监视,也可以使用广播,和监听器.
public class ProgressActivity extends Activity {
//定义一个公共静态变量
public static int flag=0;
private Timer timer;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
//如果在别的类中修改为1的话,就关闭这个activity,同时要设置为flag为0,关闭消息,取消timer
if(msg.what==1){
flag=0;
handler.removeCallbacksAndMessages(null);
timer.cancel();
finish();
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_progress);
//不断的进行监听,如果flag被修改为1的话,说明别的activity要关闭当前的弹窗,就发送一个消息关闭弹窗
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if(flag==1){
handler.sendEmptyMessage(1);
}
}
}, 0, 100);
}
@Override
public void onBackPressed() {
}
}