zoukankan      html  css  js  c++  java
  • android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)

          

             GridView用于在界面上按行、列分布显示多个组件。GridView和ListView有共同父类:AbsListView。

    GridView与ListView的差别在于:ListView仅仅在一个方向上分布,GridView在两个方向上分布。所以使用GridView时一般都指定numColumns大于1,否则该属性默认值为1。就意味着改GridView仅仅有一列,那就变成了ListView

         

        GridView的xml属性


    android:strtchMode 的值为:

      



         ImageSwitcher由FrameLayout派生而出,ImageSwitcher组件与ImageView非常相似,可是ImageSwitcher多一个功能:它所显示的图片切换时能够设置动画效果。

    使用ImageSwitcher时往往须要为它设置一个ImageSwitcher.ViewFactory的makeView()方法来负责显示ImageView


    以下结合GridView和ImageSwitcher来实现一个样例


    (1)activity_main.xml     布局GridView和ImageSwitcher

    <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_horizontal">
        <GridView 
            android:id="@+id/grid"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:horizontalSpacing="1dp"
            android:verticalSpacing="2dp"
            android:numColumns="4"/>
        <ImageSwitcher 
            android:id="@+id/imageSwitch"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        
    </LinearLayout>
    

    (2)img.xml        布局imageView 用于显示GridView的图片

    <?xml version="1.0" encoding="UTF-8"?

    > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>


    (3)MainActivity.java

    package com.example.viewimage;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.animation.AnimationUtils;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.GridView;
    import android.widget.ImageSwitcher;
    import android.widget.ImageView;
    import android.widget.ImageView.ScaleType;
    import android.widget.SimpleAdapter;
    import android.widget.ViewSwitcher.ViewFactory;
    
    public class MainActivity extends Activity {
    	
    	//定义组件
    	private GridView gredView = null;
    	private ImageSwitcher imageSwt =null;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		//获取布局组件
    		gredView = (GridView) findViewById(R.id.grid);
    		imageSwt = (ImageSwitcher) findViewById(R.id.imageSwitch);
    		//图片
    		final int images[] = new int[]{
    				R.drawable.name01,R.drawable.name02,R.drawable.name03,R.drawable.name04,
    				R.drawable.name05,R.drawable.name06,R.drawable.name07,R.drawable.name08,
    				R.drawable.name09,R.drawable.name10,R.drawable.name11,R.drawable.name12,
    				R.drawable.name13,R.drawable.name14,R.drawable.name15,R.drawable.name16
    		};
    		//创建list集合。存储图片
    		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
    		for(int i=0;i<images.length;i++){
    			Map<String,Object> map = new HashMap<String,Object>();
    			map.put("img", images[i]);
    			list.add(map);
    		}
    		//设置图片更换效果
    		//淡入效果
    		imageSwt.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
    		//淡出效果
    		imageSwt.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
    		//设置图片转换效果
    		imageSwt.setFactory(new ViewFactory() {
    			
    			@Override
    			public View makeView() {
    				ImageView imageView = new ImageView(MainActivity.this);
    				imageView.setLayoutParams(new ImageSwitcher.LayoutParams(300, 300));
    				imageView.setScaleType(ScaleType.FIT_CENTER);
    				return imageView;
    			}
    		});
    		//设置适配器
    		SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.img, new String[]{"img"}, new int[]{R.id.img});
    		//适配器
    		gredView.setAdapter(simpleAdapter);
    		//选中事件监听
    		gredView.setOnItemSelectedListener(new OnItemSelectedListener() {
    
    			@Override
    			public void onItemSelected(AdapterView<?> parent, View view,
    					int position, long id) {
    				Log.i("onItemSelected", "onItemSelected");
    				imageSwt.setImageResource(images[position]);
    			}
    
    			@Override
    			public void onNothingSelected(AdapterView<?

    > parent) { // TODO Auto-generated method stub } }); //点击事件监听 gredView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i("onItemClick", "onItemClick"); imageSwt.setImageResource(images[position]); } }); } }


    执行效果例如以下:


  • 相关阅读:
    Html-Css 从入门到放弃(一)基础知识
    PHP7 学习笔记(十)会话控制
    Redis模块学习笔记(一)RediSearch简单使用
    PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)
    Git与GitHub学习笔记(五)一次提交失败的记录
    PHP7 学习笔记(八)JetBrains PhpStorm 2017.1 x64 MySQL数据库管理工具的使用
    PHP7 学习笔记(七)如何使用zephir编译一个扩展记录
    阿里云(四)Linux 实例常用内核网络参数介绍与常见问题处理
    阿里云(三)安全组
    流媒体技术学习笔记之(十七)FFmpeg 3.3《希尔伯特》-新版本的亮点
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6724697.html
Copyright © 2011-2022 走看看