效果如下: 比较简单 demo 地址https://github.com/xueliang0614/PopupWindow package com.example.demo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { @InjectView(R.id.tv) TextView tv; @InjectView(R.id.img) ImageView img; @InjectView(R.id.linearLayout1) LinearLayout linearLayout1; @InjectView(R.id.tv_2) TextView tv2; @InjectView(R.id.img_2) ImageView img2; @InjectView(R.id.linearLayout2) LinearLayout linearLayout2; @InjectView(R.id.tv_3) TextView tv3; @InjectView(R.id.img_3) ImageView img3; @InjectView(R.id.linearLayout3) LinearLayout linearLayout3; @InjectView(R.id.supplier_list_lv) ListView supplierListLv; private ArrayList<HashMap<String, String>> menudata_1=null; private ArrayList<HashMap<String, String>> menudata_2; private ArrayList<HashMap<String, String>> menudata_3; private ListView pop_lv=null; private PopupWindow popupWindow; private SimpleAdapter simpleAdapter_1=null; private SimpleAdapter simpleAdapter_2=null; private SimpleAdapter simpleAdapter_3=null; private int menu_index=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); initData(); iniPopWinodws(); } private void iniPopWinodws() { //获取 View popwin = View.inflate(MainActivity.this, R.layout.popwin_supplier_list, null); pop_lv = (ListView) popwin.findViewById(R.id.popwin_supplier_list_lv); popupWindow = new PopupWindow(popwin,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT); popupWindow.setOutsideTouchable(true); popupWindow.setFocusable(true); popupWindow.setAnimationStyle(R.style.popwin_anim_style); popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { } }); //设置底部点击popwINODS消失 popwin.findViewById(R.id.popwin_supplier_list_bottom).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); } }); //设置适配器 simpleAdapter_1 = new SimpleAdapter(MainActivity.this, menudata_1, R.layout.item_listview_popwin, new String[]{"name"}, new int[]{R.id.listview_popwind_tv}); simpleAdapter_2 = new SimpleAdapter(MainActivity.this, menudata_2, R.layout.item_listview_popwin, new String[]{"name"}, new int[]{R.id.listview_popwind_tv}); simpleAdapter_3 = new SimpleAdapter(MainActivity.this, menudata_3, R.layout.item_listview_popwin, new String[]{"name"}, new int[]{R.id.listview_popwind_tv}); //设置点击事件 pop_lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { popupWindow.dismiss(); switch (menu_index){ case 0: String name = menudata_1.get(position).get("name"); tv.setText(name); Anmaotion( img); break; case 1: String names = menudata_2.get(position).get("name"); tv2.setText(names); Anmaotion( img2); break; case 2: String namess = menudata_3.get(position).get("name"); tv3.setText(namess); Anmaotion( img3); break; } } }); } private void initData() { String[] strings = {"水果","香蕉","房子"}; menudata_1=new ArrayList<>(); HashMap<String,String> map=null; for(int i=0;i<strings.length;i++){ map=new HashMap<>(); map.put("name",strings[i]); menudata_1.add(map); } String[] str = {"够","养","主"}; menudata_2=new ArrayList<>(); HashMap<String,String> map_2=null; for(int i=0;i<str.length;i++){ map_2=new HashMap<>(); map_2.put("name",str[i]); menudata_2.add(map_2); } String[] str_3 = {"那是","手动","sd"}; menudata_3=new ArrayList<>(); HashMap<String,String> map_3=null; for(int i=0;i<str_3.length;i++){ map_3=new HashMap<>(); map_3.put("name",str_3[i]); menudata_3.add(map_3); } } @OnClick({R.id.linearLayout1,R.id.linearLayout2,R.id.linearLayout3}) public void Onclick(View v){ switch (v.getId()){ case R.id.linearLayout1: pop_lv.setAdapter(simpleAdapter_1); // Animation rotateAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate); //img.startAnimation(rotateAnimation); Anmaotion( img); popupWindow.showAsDropDown(linearLayout1); menu_index=0; break; case R.id.linearLayout2: pop_lv.setAdapter(simpleAdapter_2); Anmaotion( img2); popupWindow.showAsDropDown(linearLayout2); menu_index=1; break; case R.id.linearLayout3: pop_lv.setAdapter(simpleAdapter_3); Anmaotion( img3); popupWindow.showAsDropDown(linearLayout3); menu_index=2; break; } } public void Anmaotion( View v){ RotateAnimation rotateAnimation = new RotateAnimation(0f, 180f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setFillAfter(true);// 设置保持动画最后的状态 rotateAnimation.setDuration(1000);// 设置动画时间 //rotateAnimation.setRepeatCount(-1);//设置重复次数 v.startAnimation(rotateAnimation); } }