010、Spinner使用

Spinner是android自带的下拉菜单控件,可以自定义,关键方法为其适配器Adapter方法setDropDownViewResource()将定义好的显示风格layout.xml作为参数传入
        tv = (TextView) findViewById(R.id.tv);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, strs);
        spinner = (Spinner) findViewById(R.id.spinner);
        adapter.setDropDownViewResource(R.layout.myspinner_dropdown);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
 
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                tv.setText("您选择的是:"+strs[position]);
                parent.setVisibility(View.VISIBLE);
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        spinner.setOnFocusChangeListener(new OnFocusChangeListener() {
            
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
            }
        });
        animation = AnimationUtils.loadAnimation(this, R.anim.my_anim);
        spinner.setOnTouchListener(new OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.startAnimation(animation);
                v.setVisibility(View.INVISIBLE);
                return false;
            }
        });
 
 
可以动态的更改Spinner内显示是条数,但此时构造Adapter时需要传入List集合,而不能使数组了。
    private void init() {
        strs.add("北京");
        strs.add("天津");
        strs.add("上海");
        tv = (TextView) findViewById(R.id.tv);
        et = (EditText) findViewById(R.id.et);
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, strs);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
    }
 
    private void setListeners() {
        findViewById(R.id.bt_add).setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                String trim = et.getText()
                        .toString().trim();
                if (TextUtils.isEmpty(trim)) {
                    Toast.makeText(ArrayListActivity.this, "输入不能为空哦", 0).show();
                } else {
                    if (strs.contains(trim)) {
                        Toast.makeText(ArrayListActivity.this, "添加的内容已经存在啦", 0)
                                .show();
                    } else {
                        adapter.add(trim);
                        spinner.setSelection(adapter.getPosition(trim));
                        et.setText("");
                    }
                }
            }
        });
        findViewById(R.id.bt_remove).setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                if (adapter.getCount() == 0) {
                    Toast.makeText(ArrayListActivity.this, "已经是空的啦", 0).show();
                } else {
                    adapter.remove(spinner.getSelectedItem().toString());
                    et.setText("");
                    if (adapter.getCount() == 0) {
                        tv.setText("");
                    }
                }
            }
        });
 
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
 
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                tv.setText(parent.getSelectedItem().toString());
            }
 
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
 
setDropDownViewResource主要是设置User单击Spinner后出现的下拉菜单样式,Android提供有两种基本的样式:
*android.R.layout.simple_spinner_item:TextView的下拉菜单
*android.R.layout.simple_spinner_dropdown_item:除了有TExtView,右边还有radio的下拉菜单。
 
 
Animation主要有两种动态方式:一种是tweened animation(渐变动画),另一种是frame by frame animation(画面转换动画)。tweened animation有以下4种基本转换方式:
*AlphaAnimation(transparency changes):透明度转换
*RotateAnimation(rotations):旋转转换
*ScaleAnimation(growing or shrinking):缩放转换
*TranslateAnimation(position changes):位置转换
定义好动画xml后,用AnimationUtils.loadAnimation将动画加载,并试图在想要加上动态效果的组件中使用startAnimation方法。
 
原文地址:https://www.cnblogs.com/zyh-blog/p/3324508.html