当前位置: 首页 > 工具软件 > ImageSwitch > 使用案例 >

ImageSwitcher、Gallery组件详解

吴峰
2023-12-01

ImageSwitcher(图片切换组件)

ImageSwitcher组件的主要功能是完成图片的切换显示
常用的一些方法:imgeSwitcher(Context context):创建imgeSwitcher对象,setFactory(ViewSwitcher.ViewFactory factory ) :用于完成两个图片切换时的转换, setImageResource(int id): 设置图片资源ID,setInAnimation(Animation inanimation) :读取进ImageSwitcher时的动画效果,setOutAnimation((Animation outanimation) :消失时的动画效果。
如果要想真正的实现图片的切换操作,那么问题的关键就在于ViewFactory的使用上,它是ViewSwitcher的一个内部接口。

public static interface
ViewSwitcher.ViewFactory

在这个接口中有一个操作方法:

public abstract View makeView ()

这个方法的作用是创建一个View显示的组件。

public class MainActivity extends AppCompatActivity {
    private Button button;
    private Button nextBautton;
    private ImageSwitcher imageSwitcher;
    private int[] image  = {R.drawable.kebi,R.drawable.kebi2,R.drawable.kobi3,R.drawable.kobi4,R.drawable.nba2,R.drawable.nba4};
    private int floot = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitch_view);
        nextBautton = (Button)findViewById(R.id.next);
        button = (Button)findViewById(R.id.button);
        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView imageView = new ImageView(MainActivity.this); //实例化图片信息
                // 设置图片的属性
                imageView.setScaleType(ImageView.ScaleType.CENTER);
                imageView.setLayoutParams(new ImageSwitcher.LayoutParams(               // 自适应图片大小
                        ActionBar.LayoutParams.FILL_PARENT, ActionBar.LayoutParams.FILL_PARENT));   // 定义组件
                return imageView;
            }
        });
        nextBautton.setOnClickListener(new View.OnClickListener() {  //按钮监听事件
            @Override
            public void onClick(View v) {
                imageSwitcher.setImageResource(image[floot++]);  //设置显示的图图片id
                checkButEnable();  // 按钮状态的设置
            }
        });
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imageSwitcher.setImageResource(image[floot--]);
                checkButEnable();
            }
        });
    }
    public void checkButEnable() {                                        // 设置按钮状态

        if (this.floot < this.image.length - 1) {
            this.nextBautton.setEnabled(true);                              // 按钮可用

        } else {
            this.nextBautton.setEnabled(false);                                  // 按钮不可用
        }
        if (this.floot == 0) {
            this.button.setEnabled(false);                         // 按钮不可用
        } else {
            this.button.setEnabled(true);                          // 按钮可用
        }
}
}

Gallery

Gallery是一个用来按水平方向显示图片列表,可以用手指直接拖动图片左右移动的视图。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。
Gallery一般使用Adapter提供要显示的数据,通常使用BaseAdapter类为Gallery组件提供数据。

Gallery控件的常用属性

(1)android:animationDuration

用于设置列表项切换时的动画持续时间

(2)android:gravity

用于设置对齐方式

(3)android:spacing

用于设置列表项之间的间距

(4)android:unselectedAlpha

用于设置没有选中的列表项的透明度

public class MainActivity extends AppCompatActivity {
    private int[] image  = {R.drawable.kebi,R.drawable.kebi2,R.drawable.kobi3,R.drawable.kobi4,R.drawable.nba2,R.drawable.nba4};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gallery gallery = (Gallery)findViewById(R.id.gallery);
        gallery.setAdapter(new mAdapter());
        gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  //监听Item
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this,"you are select"+position,Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
    public class mAdapter extends BaseAdapter{  //创建Adapter

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

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

        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView = new ImageView(MainActivity.this);  //创建图片实例
            imageView.setImageResource(image[position]);
            imageView.setScaleType(ImageView.ScaleType.CENTER);
            return imageView;
        }
    }
}

 类似资料: