popwindow中放gridview带有item依次显示动画效果

public class ViewGroupActivity extends AppCompatActivity {
    private PopupWindow mPopupWindow = null;
    private Context mContext;
    RelativeLayout rl;
    Button bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_group);
        mContext = this;
        init();


    }

    private void init() {
        bt = (Button) findViewById(R.id.button);
        rl = (RelativeLayout) findViewById(R.id.activity_view_group);
    }

    public void mycli(View view) {
        Toast.makeText(this, "mycli", Toast.LENGTH_SHORT).show();
        showPopUp();

    }

    private void showPopUp() {
        if (mPopupWindow == null) {
            View localView = getLayoutInflater().inflate(
                    R.layout.pop_lay, null);
            mPopupWindow = new PopupWindow(localView,
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            mPopupWindow.setFocusable(false);
            mPopupWindow.setOutsideTouchable(true);
            mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
            GridView gv = (GridView) localView.findViewById(R.id.gv);
            MyAdapter adapter = new MyAdapter(mContext);
            gv.setAdapter(adapter);
            gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(mContext, "mycli--" + position, Toast.LENGTH_SHORT).show();
                    clickItemAnim(view);
                }
            });
        }
        mPopupWindow.showAtLocation(rl, Gravity.CENTER, 0, 0);

    }

    private void clickItemAnim(View view) {
        View v = view.findViewById(R.id.iv);
        v.startAnimation(scaleBigAnim(300));
    }


    private Animation scaleBigAnim(int duration) {
        AnimationSet animationSet = new AnimationSet(true);
        ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, 1.1f, 1.0f, 1.1f,
                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                0.5f);
        AlphaAnimation alphaAnim = new AlphaAnimation(1f, 0.6f);
        animationSet.addAnimation(scaleAnim);
        animationSet.addAnimation(alphaAnim);
        animationSet.setDuration(duration);
        animationSet.setFillAfter(false);
        scaleAnim.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }
            @Override
            public void onAnimationRepeat(Animation animation) {
            }
            @Override
            public void onAnimationEnd(Animation animation) {
                dissPop();
            }
        });
        return animationSet;
    }


    private void dissPop() {
        if (mPopupWindow != null && mPopupWindow.isShowing()) {
            mPopupWindow.dismiss();
            mPopupWindow = null;
        }

    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (mPopupWindow != null && mPopupWindow.isShowing()) {
                dissPop();
                return true;
            } else {
                return super.onKeyDown(keyCode, event);
            }
        }

        return super.onKeyDown(keyCode, event);
    }

}

public class MyAdapter extends BaseAdapter{
    private Context mContext;

    private int[] pics=new int[]{R.drawable.ic_act_add_audio,R.drawable.ic_act_add_first,R.drawable.ic_act_add_grouth,
            R.drawable.ic_act_add_photo,
            R.drawable.ic_act_add_text,R.drawable.ic_act_add_video};

    private String[] tets=new String[]{"音频","音频","音频","音频","音频","音频"};


    public MyAdapter(Context mContext) {
        this.mContext=mContext;
    }

    @Override
    public int getCount() {
        return pics.length;
    }

    @Override
    public Object getItem(int position) {
        return pics[position];
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if (convertView == null){
            holder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.pop_lay_item, null);
            holder.mImageView = ((ImageView)convertView.findViewById(R.id.iv));
            holder.mTextvView = ((TextView)convertView.findViewById(R.id.tv));
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.mImageView.setImageResource(pics[position]);
        holder.mTextvView.setText(tets[position]);
        return convertView;
    }

    public class ViewHolder
    {
        public ImageView mImageView;
        public TextView mTextvView;
    }


}


pop_lay布局文件:

<?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="match_parent"
    android:background="@drawable/bg_add_act_action"
    android:orientation="vertical">
    <ImageView
        android:layout_width="200dp"
        android:layout_height="130dp"
        android:src="@drawable/bg_act_add_nomal"
        android:layout_marginTop="100dp"
        android:layout_gravity="center_horizontal"/>

    <GridView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:background="@android:color/transparent"
        android:cacheColorHint="@android:color/transparent"
        android:listSelector="@android:color/transparent"
        android:id="@+id/gv"
        android:numColumns="3"
        android:gravity="center"
        android:layoutAnimation="@anim/navagation_gridview_anim"/>
</LinearLayout>

pop_lay_item布局文件:

<?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="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:src="@drawable/ic_act_add_audio" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="12dp"
        android:layout_marginBottom="30dp"
        android:text="@string/app_name"
        android:textSize="14sp" />


</LinearLayout>


anim/navagation_gridview_anim文件:

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/pop_enter_anim"
    android:animationOrder="normal"
    android:delay="0.2" />


pop_enter_anim.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate android:fromXDelta="0"
        android:fromYDelta="30%"
        android:toXDelta="0"
        android:toYDelta="0"
        android:duration="350"
        android:interpolator="@android:anim/anticipate_overshoot_interpolator" />

</set>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值