import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import com.ylt.gxjkz.youliantong.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by hutao on 2018/3/27.
*
右上角的弹框 如:扫一扫等
*/
public class ShowPopRightTop
extends PopupWindow {
private final View
contentView;
public interface OnItemClick {
void OnClick(
int position); }
public ShowPopRightTop(
final Activity context, List<String> mData,
final OnItemClick click) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.
LAYOUT_INFLATER_SERVICE);
contentView = inflater.inflate(R.layout.
pop_window_right_top,
null);
int height = context.getWindowManager().getDefaultDisplay().getHeight();
int width = context.getWindowManager().getDefaultDisplay().getWidth();
//
设置
SelectPicPopupWindow
的
view
this.setContentView(
contentView);
//
设置
SelectPicPopupWindow
弹出窗体的宽
this.setWidth(width /
3);
//
设置
SelectPicPopupWindow
弹出窗体的高
this.setHeight(ViewGroup.LayoutParams.
WRAP_CONTENT);
//
设置
SelectPicPopupWindow
弹出窗体可点击
this.setFocusable(
true);
this.setOutsideTouchable(
true);
//
刷新状态
this.update();
//
实例化一个
ColorDrawable
颜色为半透明
0000000000
// ColorDrawable dw = new ColorDrawable(context.getResources().getColor(R.color.color_ff8300));
//
点
back
键和其他地方使其消失
,
设置了这个才能触发
OnDismisslistener
,设置其他控件变化等操作
this.setBackgroundDrawable(
new ColorDrawable());
// this.setAnimationStyle(android.R.style.Animation_Dialog);
//
设置
SelectPicPopupWindow
弹出窗体动画效果
this.setAnimationStyle(R.style.
AnimationPreview); RecyclerView recyclerView = (RecyclerView)
contentView.findViewById(R.id.
recyclerView); recyclerView.setLayoutManager(
new LinearLayoutManager(context)); ShowPopRightTopAdapter myAdapter =
new ShowPopRightTopAdapter(context, mData); recyclerView.setAdapter(myAdapter); myAdapter.setOnItemClickListener(
new ShowPopRightTopAdapter.OnItemClickListener() {
@Override
public void OnItemClick(
int position) {
click.OnClick(position); ShowPopRightTop.
this.dismiss(); } }); }
public static class ShowPopRightTopAdapter
extends RecyclerView.Adapter<ShowPopRightTopAdapter.ViewHolder> {
private Context
context;
private List<String>
mData =
new ArrayList<>();
public ShowPopRightTopAdapter(Context context, List<String> mData) {
this.
context = context;
this.
mData = mData; }
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
return new ViewHolder(LayoutInflater.
from(
context).inflate(R.layout.
item_show_pop_right_top, parent,
false)); }
@Override
public void onBindViewHolder(ViewHolder holder,
final int position) { holder.
desc.setText(
mData.get(position)); holder.
item.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.OnItemClick(
position); } }); }
@Override
public int getItemCount() {
return
mData.size(); }
public class ViewHolder
extends RecyclerView.ViewHolder { LinearLayout
item; TextView
desc;
public ViewHolder(View itemView) {
super(itemView);
item = (LinearLayout) itemView.findViewById(R.id.
item_layout);
desc = (TextView) itemView.findViewById(R.id.
desc); } }
private ShowPopRightTopAdapter.OnItemClickListener
listener;
public void setOnItemClickListener(OnItemClickListener listener) {
this.
listener = listener; }
public interface OnItemClickListener {
void OnItemClick(
int position); } }
/**
*
显示
popupWindow
*
*
@param
parent
*/
public void showPopupWindow(View parent) {
if (!
this.isShowing()) {
//
以下拉方式显示
popupwindow
this.showAsDropDown(parent, parent.getLayoutParams().
width /
2 -
10,
0); }
else {
this.dismiss(); } }}
pop_window_right_top 布局文件:
<?
xml version=
"1.0"
encoding=
"utf-8"
?><
LinearLayout
xmlns:
android
=
"http://schemas.android.com/apk/res/android"
android
:layout_width=
"match_parent"
android
:layout_height=
"wrap_content"
android
:background=
"@color/color_7F7F7F"
android
:gravity=
"center_horizontal"
android
:orientation=
"vertical"> <
android.support.v7.widget.RecyclerView
android
:id=
"@+id/recyclerView"
android
:layout_width=
"match_parent"
android
:layout_height=
"wrap_content" /></
LinearLayout>
R.style.AnimationPreview 动画
<!--
右上角弹框的动画 扫一扫的那个弹框
--><
style
name=
"AnimationPreview"> <
item
name=
"android:windowEnterAnimation">@anim/pop_right_top_fade_in</
item> <
item
name=
"android:windowExitAnimation">@anim/pop_right_top_fade_out</
item></
style>
pop_right_top_fade_in代码如下:
<?
xml version=
"1.0"
encoding=
"utf-8"
?>
<!--
左上角扩大
--><
scale
xmlns:
android
=
"http://schemas.android.com/apk/res/android"
android
:duration=
"100"
android
:fromXScale=
"0.001"
android
:fromYScale=
"0.001"
android
:interpolator=
"@android:anim/accelerate_decelerate_interpolator"
android
:pivotX=
"100%"
android
:pivotY=
"10%"
android
:toXScale=
"1.0"
android
:toYScale=
"1.0" />
pop_right_top_fade_out代码如下:
<?xml version="1.0" encoding="utf-8"?><!-- 左上角缩小 --><scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="100" android:fromXScale="1.0" android:fromYScale="1.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="100%" android:pivotY="10%" android:toXScale="0.001" android:toYScale="0.001" />
R.layout.item_show_pop_right_top 布局文件:
<?
xml version=
"1.0"
encoding=
"utf-8"
?><
LinearLayout
xmlns:
android
=
"http://schemas.android.com/apk/res/android"
android
:layout_width=
"match_parent"
android
:layout_height=
"wrap_content"
android
:orientation=
"vertical"> <
LinearLayout
android
:id=
"@+id/item_layout"
android
:layout_width=
"match_parent"
android
:layout_height=
"wrap_content"
android
:orientation=
"horizontal"> <
ImageView
android
:layout_width=
"wrap_content"
android
:layout_height=
"match_parent"
android
:layout_margin=
"10dp"
android
:gravity=
"center"
android
:src=
"@mipmap/icon_delete"
android
:visibility=
"gone" /> <
TextView
android
:id=
"@+id/desc"
android
:layout_width=
"match_parent"
android
:layout_height=
"45dp"
android
:layout_marginLeft=
"5dp"
android
:gravity=
"center"
android
:text=
"
扫一扫
"
android
:textColor=
"@color/color_ffffff"
android
:textSize=
"16sp" /> </
LinearLayout></
LinearLayout>