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>
popwindow中放gridview带有item依次显示动画效果
最新推荐文章于 2018-07-02 19:08:21 发布