项目中常见的一个控件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>