zoukankan      html  css  js  c++  java
  • android学习笔记14——GridView、ImageSwitcher

    GridView--网格视图、ImageSwitcher--图像切换器

    ==》

    GridView,用于在界面上按行、列的分布形式显示多个组件;GridView和ListView父类相同——AbsListView,两者的主要区别是ListView属单方向分布,GridView属两个方向分布。

    GridView也是通过Adapter提供显示数据——可通过SimpleAdapter或者自定义方式(开发重写BaseAdapter)提供数据显示。

    GridView常用XML属性:

    android:columnWidth setcolumnWidth(int) 设置列的宽度
    android:gravity setGravity(int) 设置对其方式
    android:horizontalSpacing setHorizontalSpacing(int) 设置各元素之间的水平间距
    android:numColumns setNumColumns(int) 设置列数
    android:stretchMode setStretchMode(int) 设置拉伸模式
    android:verticalSpacing setVerticalSpacing(int) 设置各元素

    注意:

    GridView在使用时,android:columnWidth属性设置一般都大于“1”,默认为1.

    android:stretchMode支持的属性:

      NO_STRETCH:不拉伸

      STRETCH_SPACING:仅拉伸元素之间的间距

      STRETCH_SPACING_UNIFORM:表格元素本身、元素之间的间距一起拉伸

      STRETCH_SPACING_COLUMN_WIDTH:仅拉伸元素表格元素本身  

    ImageSwitcher

    ==>

    ImageSwitcher由FrameLayout派生而来,ImageSwitcher和ImageView很相似,都用于显示图片。

    ImageSwitcher比后者多了一个功能——显示的图片切换时可以设置动画效果。

    使用ImageSwitcher需要为其设置一个ImageSwitcher.ViewFactory,

    实现ImageSwitcher.ViewFactory时需要实现一个makeView()——该方法通常返回一个ImageView,而ImageSwitcher则负责显示这个ImageView.

    实例一:

    布局文件==》
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <GridView
            android:id="@+id/gvcontent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:horizontalSpacing="2pt"
            android:numColumns="4"
            android:verticalSpacing="2pt" />
    
        <ImageSwitcher
            android:id="@+id/imgswitcher"
            android:layout_gravity="center_horizontal"
            android:layout_width="320dp"
            android:layout_height="320dp" />
    
    </LinearLayout>
    
    cell.xml==>
    <?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/imgview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>
    
    代码实现==》
    package com.example.mygridview;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import android.os.Build;
    import android.os.Bundle;
    import android.annotation.TargetApi;
    import android.app.ActionBar.LayoutParams;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.animation.AnimationUtils;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.GridView;
    import android.widget.ImageSwitcher;
    import android.widget.ImageView;
    import android.widget.SimpleAdapter;
    import android.widget.ViewSwitcher.ViewFactory;
    
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public class MainActivity extends Activity
    {
    	private int[] ImageIds = new int[]
    	{ R.drawable.one, R.drawable.tw, R.drawable.th, R.drawable.eight, R.drawable.ele,
    			R.drawable.five, R.drawable.four, R.drawable.nice, R.drawable.seven, R.drawable.six,
    			R.drawable.sl, R.drawable.ss, R.drawable.sw, R.drawable.ten, R.drawable.tw,
    			R.drawable.oneowne };
    	private ImageSwitcher Switcher;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    		for (int i = 0; i < ImageIds.length; i++)
    		{
    			Map<String, Object> item = new HashMap<String, Object>();
    			item.put("image", ImageIds[i]);
    			list.add(item);
    		}
    
    		Switcher = (ImageSwitcher) this.findViewById(R.id.imgswitcher);
    		// 设置图片更换的动画效果
    		Switcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
    		Switcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
    		// 为ImageSwitcher设置图片切换的动画效果
    		Switcher.setFactory(new ViewFactory()
    		{
    			@Override
    			public View makeView()
    			{
    				ImageView img = new ImageView(MainActivity.this);
    				img.setBackgroundColor(0xff0000);
    				img.setScaleType(ImageView.ScaleType.FIT_CENTER);
    				img.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
    						LayoutParams.WRAP_CONTENT));
    				return img;
    			}
    		});
    
    		// 创建一个SimpleAdapter
    		SimpleAdapter adaper = new SimpleAdapter(this, list, R.layout.cell, new String[]
    		{ "image" }, new int[]
    		{ R.id.imgview });
    
    		GridView gv = (GridView) this.findViewById(R.id.gvcontent);
    		gv.setAdapter(adaper);
    		// 以下为两种处理事件的方式
    		// 方式一,建议使用
    		gv.setOnItemClickListener(new myGridViewItemOnListener());
    		// 方式二
    		gv.setOnItemClickListener(new OnItemClickListener()
    		{
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    			{
    				// 显示当前被选中的图片
    				Switcher.setImageResource(ImageIds[position % ImageIds.length]);
    			}
    		});
    	}
    
    	private class myGridViewItemOnListener implements OnItemClickListener
    	{
    		@Override
    		public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    		{
    			// 显示当前被选中的图片
    			Switcher.setImageResource(ImageIds[position % ImageIds.length]);
    		}
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu)
    	{
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    }
    

    注意:单击GridView中的图片ImageSwitcher会显示对应的图片信息。

    运行效果如下:

    
    
    
  • 相关阅读:
    Spring boot 梳理
    Spring boot 梳理
    Spring boot 梳理
    观察者模式
    设计模式原则
    Spring MVC上传文件
    Spring MVC视图解析器
    Spring MVC中Action使用总结
    Spring MVC控制器
    Java并发 两个线程交替执行和死锁
  • 原文地址:https://www.cnblogs.com/YYkun/p/5765595.html
Copyright © 2011-2022 走看看