項目中常見的一個控件popupWindow,使用起來非常方便,可以隨心所欲的打進去一個View,就能達我們的目的;
這裏我基本是把項目中寫的代碼拷貝過來了,主要是彈出的一個自定的廣告popupWindow;
效果圖:
1.MainActivity.java
public class MainActivity extends AppCompatActivity {
PopupWindow popupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.popupWindow);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("diajij", "djoiajish");
//直接自定義一個view然後打進去就ok了 我這裏演示一個廣告的popupWindow
View itemView = View.inflate(MainActivity.this, R.layout.local_guanggao_detail_item, null);
//測試 :自定義的view裏面只有一個TextView
//TextView name = (TextView) itemView.findViewById(R.id.text_name);
//name.setText("許可");
TextView localDetailTvCityName = (TextView) itemView.findViewById(R.id.local_detail_tv_city_name);
ImageView localDetailIvShiMing = (ImageView) itemView.findViewById(R.id.local_detail_iv_shiming);
TextView localDetailTvShiMing = (TextView) itemView.findViewById(R.id.local_detail_tv_shiming);
ImageView localDetailIvGuanFang = (ImageView) itemView.findViewById(R.id.local_detail_iv_guanfang);
TextView localDetailTvGuanFang = (TextView) itemView.findViewById(R.id.local_detail_tv_guanfang);
TextView localDetailTvCityPartner = (TextView) itemView.findViewById(R.id.local_detail_tv_city_partner);
TextView localDetailTvContain = (TextView) itemView.findViewById(R.id.local_item_detail_tv_contain);
TextView localDetailTvName = (TextView) itemView.findViewById(R.id.local_detail_tv_name);
ImageView localDetailPhoneTb = (ImageView) itemView.findViewById(R.id.local_detail_phone_tb);
TextView localDetailPhone = (TextView) itemView.findViewById(R.id.local_detail_phone);
ImageView localDetailWeixinTb = (ImageView) itemView.findViewById(R.id.local_detail_weixin_tb);
final TextView localDetailWeixin = (TextView) itemView.findViewById(R.id.local_detail_weixin);
//右上角的叉叉圖片
ImageView localDetailClose = (ImageView) itemView.findViewById(R.id.local_detail_close);
localDetailClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (popupWindow != null) {
popupWindow.dismiss();
}
}
});
//城市名
localDetailTvCityName.setText("中國");
localDetailTvCityPartner.setText("城市合夥人");
//頭像
//MyApplication.imageLoader.displayImage(partnersBeen.get(i).headImg, localDetailCivHead, MyApplication.getAvatorOptions());
//實名認證
localDetailIvShiMing.setVisibility(View.VISIBLE);
localDetailTvShiMing.setText("實名認證");
//官方授權
localDetailIvGuanFang.setVisibility(View.VISIBLE);
localDetailTvGuanFang.setText("官方授權");
//內容
localDetailTvContain.setText("我是廣告內容,我是廣告內容,我是廣告內容,我是廣告內容,我是廣告內容,我是廣告內容");
//負責人
localDetailTvName.setText("負責人:許可");
// 電話
localDetailPhoneTb.setVisibility(View.VISIBLE);
localDetailPhone.setText("888888888");
localDetailPhone.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
ClipboardManager cm = (ClipboardManager) getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
// 將文本內容放到系統剪貼板裏。
cm.setText(localDetailWeixin.getText());
Toast.makeText(getApplicationContext(), "手機號已經複製到剪切板了", Toast.LENGTH_SHORT).show();
return true;
}
});
//微信
localDetailWeixinTb.setVisibility(View.VISIBLE);
localDetailWeixin.setText("888888888");
localDetailWeixin.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
ClipboardManager cm = (ClipboardManager) getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
// 將文本內容放到系統剪貼板裏。
cm.setText(localDetailWeixin.getText());
Toast.makeText(getApplicationContext(), "微信已經複製到剪切板了", Toast.LENGTH_SHORT).show();
return true;
}
});
//創建popupWindow,第一個參數是自定義的view,第二個參數分別是popupWindow的寬和高(第四個參數是聚集(true/false),下面手動設置了)
popupWindow = new PopupWindow(itemView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//觸摸點擊事件
popupWindow.setTouchable(true);
//聚集
popupWindow.setFocusable(true);
//設置允許在外點擊消失
popupWindow.setOutsideTouchable(true);
//點擊返回鍵popupwindown消失
popupWindow.setBackgroundDrawable(new BitmapDrawable());
//背景變暗
WindowManager.LayoutParams params = MainActivity.this.getWindow().getAttributes();
params.alpha = 0.5f;
MainActivity.this.getWindow().setAttributes(params);
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
//監聽如果popupWindown消失之後背景變亮
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
WindowManager.LayoutParams params = MainActivity.this.getWindow()
.getAttributes();
params.alpha = 1f;
MainActivity.this.getWindow().setAttributes(params);
}
});
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00ffffff")));
popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
popupWindow.dismiss();
}
}
控件比較多,本來還有一個自定義的頭像在左上角的,由於文件比較多,這裏就把左上角的自定義圓形頭像給去掉了,主要是學習popupWindow的功能.
需要注意的是:注意什麼時候dismiss()掉popupWIndow;
2.xml文件:R.layout.local_guanggao_detail_item
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="180dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/local_item_detail">
<RelativeLayout
android:id="@+id/local_item_dettail_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="44dp"
android:layout_marginTop="8dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:orientation="horizontal">
<TextView
android:id="@+id/local_detail_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="負責人:許可"
android:textColor="#000000"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:orientation="horizontal">
<TextView
android:id="@+id/local_detail_tv_city_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中國"
android:textSize="10sp" />
<TextView
android:id="@+id/local_detail_tv_city_partner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="城市合夥人"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="center"
android:layout_margin="8dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/local_detail_iv_shiming"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/shiming"
android:visibility="invisible" />
<TextView
android:id="@+id/local_detail_tv_shiming"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/local_detail_iv_guanfang"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/shouquan"
android:visibility="invisible" />
<TextView
android:id="@+id/local_detail_tv_guanfang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<TextView
android:id="@+id/local_item_detail_tv_contain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/local_item_dettail_title"
android:layout_centerInParent="true"
android:layout_margin="10dp"
android:gravity="left"
android:text="廣的的啊是的撒是廣的撒廣的撒廣的撒廣的撒廣的撒是廣告廣告的"
android:textSize="14sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="8dp"
android:gravity="center"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/local_detail_phone_tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/phone"
android:visibility="invisible" />
<TextView
android:id="@+id/local_detail_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="center"
android:textColor="#f84a3c" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/local_detail_weixin_tb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/weixin"
android:visibility="invisible" />
<TextView
android:id="@+id/local_detail_weixin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="center"
android:textColor="#00b900" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<ImageView
android:id="@+id/local_detail_close"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="30dp"
android:src="@drawable/close" />
</RelativeLayout>