美文网首页
android pickerView滚筒选择列表之图片选择器

android pickerView滚筒选择列表之图片选择器

作者: nade_s | 来源:发表于2018-07-12 14:55 被阅读0次

    近期项目需求 一个滚筒图片选择列表 想来想去没有合适的 ios有一个pickerView 是可以的 而我大安卓我没有想起来有这样效果图 ( 可能是我没想起来) 时间比较赶 简易性 超简单的图片滚筒选择列表 

    思路 : 其实很简单 popupwindow+listview 你可以给list view固定高度 listview的item 也固定 popupwindow视图内显示你想要的个数 可以上下滑动 再给listview的item一个点击变色 就可以了 下面上代码

    popwindow的布局代码

    xml

    给个效果图吧

    listview 条目是40x40的图片 让它居中就行了

    java 代码

    public class MainActivity extends AppCompatActivity {

    private Button mainbt;

    private PopupWindow popupWindow;

    private WindowManager.LayoutParams params;

    private ImageView mainimg;

    private int p = 1001;

    private ImageView img1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mainbt = (Button) findViewById(R.id.main_bt);

        mainimg = (ImageView) findViewById(R.id.main_img);

        img1 = (ImageView) findViewById(R.id.main_img1);

        RotateAnimation animation = new RotateAnimation(0,-15,50,50);

        animation.setRepeatCount(1);

        animation.setFillAfter(true);

        animation.setDuration(1);

        img1.startAnimation(animation);

        mainbt.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

              showPopupWindow(v);

            }

        });

    }

    private void showPopupWindow(View v) {

        View view = getLayoutInflater().inflate(R.layout.popup_window, null);

        popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT,true);

        //点击外部区域popwindow消失

        popupWindow.setBackgroundDrawable(new BitmapDrawable());

        popupWindow.setFocusable(true);

        //显示(靠中间)

        popupWindow.showAtLocation(findViewById(R.id.main_view), Gravity.BOTTOM, 0, 0);

        TextView popsure = (TextView) view.findViewById(R.id.pop_sure);

        TextView popcancel = (TextView) view.findViewById(R.id.pop_cancel);

        List list = new ArrayList<>();

        for (int i = 0; i < 6; i++) {

            list.add(i);

        }

        ListView lv_list = (ListView) view.findViewById(R.id.grade_list);

        final PopAdapter popAdapter = new PopAdapter(MainActivity.this, (ArrayList) list);

        lv_list.setAdapter(popAdapter);

        lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView parent, View view,

                                    int position, long id) {

                p = position;

                Toast.makeText(MainActivity.this, "点击了条目--"+position, Toast.LENGTH_SHORT).show();

              // popupWindow.dismiss();

            }

        });

        lv_list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override

            public void onItemSelected(AdapterView parent, View view, int position, long id) {

                Toast.makeText(MainActivity.this, "选中了---"+position, Toast.LENGTH_SHORT).show();

            }

            @Override

            public void onNothingSelected(AdapterView parent) {

                Toast.makeText(MainActivity.this, "没选中", Toast.LENGTH_SHORT).show();

            }

        });

        popsure.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(MainActivity.this, "确定--"+p, Toast.LENGTH_SHORT).show();

              switch (p){

                  case 1001:

                      break;

                  case 0:

                      mainimg.setImageResource(R.drawable.gouone);

                      break;

                  case 1:

                      mainimg.setImageResource(R.drawable.goutwo);

                      break;

                  case 2:

                      mainimg.setImageResource(R.drawable.gouthree);

                      break;

                  case 3:

                      mainimg.setImageResource(R.drawable.goufour);

                      break;

                  case 4:

                      mainimg.setImageResource(R.drawable.goufive);

                      break;

                  case 5:

                      mainimg.setImageResource(R.drawable.gousix);

                      break;

              }

                popupWindow.dismiss();

            }

        });

        popcancel.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                popupWindow.dismiss();

            }

        });

    }

    // listview 适配器

    class PopAdapter extends BaseAdapter{

        Context context;

        ArrayList list;

        public PopAdapter(Context context, ArrayList list) {

            this.context=context;

            this.list=list;

        }

        @Override

        public int getCount() {

            return list.size();

        }

        @Override

        public Object getItem(int position) {

            return list.get(position);

        }

        @Override

        public long getItemId(int position) {

            return position;

        }

        @Override

        public View getView(int position, View convertView, ViewGroup parent) {

            View view;

            ViewHolder holder;

            if (convertView==null){

                view = View.inflate(context,R.layout.item_pop,null);

                holder = new ViewHolder();

                holder.popimg = (ImageView) view.findViewById(R.id.pop_img);

                view.setTag(holder);

            }else {

                view= convertView;

                holder = (ViewHolder) view.getTag();

            }

            switch (list.get(position)){

                case 0:

                    holder.popimg.setImageResource(R.drawable.gouone);

                    break;

                case 1:

                    holder.popimg.setImageResource(R.drawable.goutwo);

                    break;

                case 2:

                    holder.popimg.setImageResource(R.drawable.gouthree);

                    break;

                case 3:

                    holder.popimg.setImageResource(R.drawable.goufour);

                    break;

                case 4:

                    holder.popimg.setImageResource(R.drawable.goufive);

                    break;

                case 5:

                    holder.popimg.setImageResource(R.drawable.gousix);

                    break;

            }

            return view;

        }

        class ViewHolder{

            ImageView popimg;

        }

    }

    }

    效果图

    喜欢的可以点个赞 有时间再研究一下 ok的话给大家自定义一个 仿ios的pickerview

    相关文章

      网友评论

          本文标题:android pickerView滚筒选择列表之图片选择器

          本文链接:https://www.haomeiwen.com/subject/goqrpftx.html