package razerdp.demo.popup;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.OvershootInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import razerdp.basepopup.BasePopupWindow;
import razerdp.basepopup.R;
import razerdp.demo.utils.DimensUtils;
/**
* Created by 大灯泡 on 2016/12/6.
* <p>
* 从顶部下滑的Poup
*/
public class SlideFromTopPopup extends BasePopupWindow {
private List<String> testList;
public SlideFromTopPopup(Activity context) {
super(context);
setBackPressEnable(false);
setDismissWhenTouchOuside(true);
testList = new ArrayList<>();
for (int i = 0; i < 50; i++) {
testList.add("position - " + i);
}
ListView listView = (ListView) findViewById(R.id.popup_list);
listView.setAdapter(new InnerPopupAdapter(context, testList));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getContext(), testList.get(position), Toast.LENGTH_LONG).show();
}
});
}
@Override
protected Animation initShowAnimation() {
TranslateAnimation translateAnimation = new TranslateAnimation(0f, 0f, -DimensUtils.dipToPx(getContext(), 350f), 0);
translateAnimation.setDuration(450);
translateAnimation.setInterpolator(new OvershootInterpolator(1));
return translateAnimation;
}
@Override
protected Animation initExitAnimation() {
TranslateAnimation translateAnimation = new TranslateAnimation(0f, 0f, 0, -DimensUtils.dipToPx(getContext(), 350f));
translateAnimation.setDuration(450);
translateAnimation.setInterpolator(new OvershootInterpolator(-4));
return translateAnimation;
}
@Override
public View getClickToDismissView() {
return getPopupWindowView();
}
@Override
public View onCreatePopupView() {
return createPopupById(R.layout.popup_select_from_top);
}
@Override
public View initAnimaView() {
return findViewById(R.id.popup_anima);
}
//=============================================================adapter
private static class InnerPopupAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private Context mContext;
private List<String> mItemList;
public InnerPopupAdapter(Context context, @NonNull List<String> itemList) {
mContext = context;
mItemList = itemList;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return mItemList.size();
}
@Override
public String getItem(int position) {
return mItemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
InnerPopupAdapter.ViewHolder vh = null;
if (convertView == null) {
vh = new InnerPopupAdapter.ViewHolder();
convertView = mInflater.inflate(R.layout.item_popup_list, parent, false);
vh.mTextView = (TextView) convertView.findViewById(R.id.item_tx);
convertView.setTag(vh);
} else {
vh = (InnerPopupAdapter.ViewHolder) convertView.getTag();
}
vh.mTextView.setText(getItem(position));
return convertView;
}
class ViewHolder {
public TextView mTextView;
}
}
}