zoukankan      html  css  js  c++  java
  • GridView和ImageSwitcher以及ImageView

    网格布局GridView和Listview很相似,只不过前者是多列的.如果把GridView的android:numColumns设置为1,他就是ListView了.

    通过GridView和ImageSwitcher以及ImageView做一个"带有预览的图片浏览器"

    ImageSwitcher和ImageView十分相似,只不过比后者多了一个功能---它所显示的图片切换时可以设置动画效果

    使用ImageSwitcher时,需要给他设置ImageSwitcher.ViewFactory, 实现ImageSwitcher.viewFactory时,需要实现一个makeView()方法, 该方法通常返回一个ImageView对象, 而ImageSwitcher则负责显示这个Imageview对象.

    <?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:orientation="vertical" >
    
        <GridView
            android:id="@+id/gv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:numColumns="4" >
        </GridView>
    
        <ImageSwitcher
            android:id="@+id/is"
            android:layout_width="320dp"
            android:layout_height="320dp" >
        </ImageSwitcher>
    
    </LinearLayout>
    <?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:orientation="vertical" >
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

    主程序如下

    public class MainActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.grid);
    
            GridView gv = (GridView) findViewById(R.id.gv);
            final ImageSwitcher is = (ImageSwitcher) findViewById(R.id.is);
    
            final int[] images = new int[] { R.drawable.bomb5, R.drawable.bomb6,
                    R.drawable.bomb7, R.drawable.bomb8, R.drawable.bomb9,
                    R.drawable.bomb10, R.drawable.bomb11, R.drawable.bomb12,
                    R.drawable.bomb13, R.drawable.bomb14, R.drawable.bomb15,
                    R.drawable.bomb16 };
    
            List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
            for (int i = 0; i < images.length; i++) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("image", images[i]);
                data.add(map);
            }
    
            // 设置动画
            is.setInAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_in));
            is.setOutAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_out));
    
            // 设置图片切换效果
            is.setFactory(new ViewFactory() {
    
                @Override
                public View makeView() {
                    ImageView iv = new ImageView(MainActivity.this);
                    iv.setBackgroundColor(0xff0000); // 设置背景色
                    iv.setScaleType(ScaleType.FIT_CENTER);// 设置缩放类型
                    iv.setLayoutParams(new ImageSwitcher.LayoutParams(
                            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                    return iv;
                }
            });
    
            //在适配器中引入 cell布局文件,
            SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.cell,
                    new String[] { "image" }, new int[] { R.id.image});
    
            gv.setAdapter(adapter);
    
            gv.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    is.setImageResource(images[position % images.length]);
    
                }
            });
    
            gv.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                        int position, long id) {
                    is.setImageResource(images[position % images.length]);
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                }
            });
    
        }
    
    }
  • 相关阅读:
    十款最实用的Android UI设计工具
    tom大叔blog--------深入理解javascript系列-----------笔记
    右键
    指尖下的js —— 多触式web前端开发之三:处理复杂手势
    关于移动端点击后出现闪或者黑色背景
    修改wamp的WWW目录
    Unicode中文排序
    jquery 小记
    pageX,clientX,offsetX,layerX的区别
    为什么 ["1", "2", "3"].map(parseInt) 返回 [1,NaN,NaN]?【转】
  • 原文地址:https://www.cnblogs.com/android-zcq/p/3140706.html
Copyright © 2011-2022 走看看