PopWindow實現顯示背景視窗變暗
阿新 • • 發佈:2019-01-03
popwindow的使用是非常簡單的,但是怎麼能跟dialog一樣,顯示背景自動變暗呢?
需要改變windowManager.Layoutparams.alfa 視窗透明度就好了
效果圖如下:package com.lei.demo; import android.graphics.drawable.BitmapDrawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private PopupWindow pop; private TextView showPopTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showPopTv = (TextView) findViewById(R.id.show_pop_tv); initPop(); showPopTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showPop(); } }); } void showPop(){ changeWindowAlfa(0.7f);//改變視窗透明度 pop.showAtLocation(showPopTv, Gravity.CENTER, 0, 0); pop.update(); } private void initPop(){ View content = LayoutInflater.from(this).inflate(R.layout.activity_main,null); content.setBackgroundResource(android.R.color.holo_blue_bright); TextView tv = (TextView) content.findViewById(R.id.show_pop_tv); tv.setText("i am a popwindow!!"); pop = new PopupWindow(content, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,true);//true:popupWindow獲得焦點 pop.setOutsideTouchable(true);//設定外部點選可消失 pop.setBackgroundDrawable(new BitmapDrawable());//與上面一起用才能實現點選外部消失 pop.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { changeWindowAlfa(1f);//pop消失,透明度恢復 } }); } /* 更改螢幕視窗透明度 */ void changeWindowAlfa(float alfa){ WindowManager.LayoutParams params = getWindow().getAttributes(); params.alpha = alfa; getWindow().setAttributes(params); } }