android之路Gallery 画廊

Gallery是一个内部元素能够水平滚动,而且能够把当前选择的子元素定位在它中心的布局组件。

我们还是直接看看样例的执行效果。

1.新疆项目HelloGallery

2.把须要展示的图片放入res/drawable文件夹。woman01.jpg。woman02.jpg,woman03.jpg

3.res/layout/activity_main.xml文件的内容例如以下:

<FrameLayout  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:id="@+id/FrameLayout01"
   >
	<ImageView android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    android:id="@+id/ImageView01"
	    android:src="@drawable/woman01"/>

	<Gallery android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:id="@+id/gallery01"
	    android:spacing="5dp"/>

</FrameLayout >

我们使用FrameLayout来实现叠加效果,使用ImageView来显示大图。Gallery来展示画廊,android:spacing="5dp" 属性则是用来设置元素之间的间隔。

4.在res/values/文件夹中新建一个attrs.xml内容例如以下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <declare-styleable name="HelloGallery">
         <attr name="android:galleryItemBackground">
        </attr>
   </declare-styleable>
</resources>

5.主activity,MainActivity的代码例如以下:

<pre name="code" class="java">package com.howlaa.hellogallery;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final ImageView iv = (ImageView)findViewById(R.id.ImageView01);
		Gallery g = (Gallery) findViewById(R.id.gallery01);
		//设置图片匹配器
        g.setAdapter(new ImageAdapter(this));
        //设置AdapterView点击监听器,Gallery是AdapterView的子类
        g.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
                    //显示点击的是第几张图片
                    Toast.makeText(MainActivity.this, "" + position,
                                    Toast.LENGTH_LONG).show();
                    //设置背景部分的ImageView显示当前Item的图片
                    iv.setImageResource(((ImageView)view).getId());
	            }
	    });
	}

}

6.ImageAdapter的代码例如以下:

package com.howlaa.hellogallery;

import android.content.Context;
import android.content.res.TypedArray;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.SpinnerAdapter;

public class ImageAdapter extends BaseAdapter {

	//Item的修饰背景
    int mGalleryItemBackground;

    //上下文对象
    private Context mContext;

    //图片数组
    private Integer[] mImageIds ={R.drawable.woman01,R.drawable.woman02,R.drawable.woman03};
	  //构造方法
    public ImageAdapter(Context c){
            mContext = c;
	    //读取styleable资源
	    TypedArray a = mContext.obtainStyledAttributes(R.styleable.HelloGallery);
	    mGalleryItemBackground = a.getResourceId(
	            R.styleable.HelloGallery_android_galleryItemBackground, 0);
	    a.recycle();
    }

	@Override
	public int getCount() {
		 return mImageIds.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 iv = new ImageView(mContext);
		iv.setImageResource(mImageIds[position]);
		  //给生成的ImageView设置Id,不设置的话Id都是-1
        iv.setId(mImageIds[position]);
        iv.setLayoutParams(new Gallery.LayoutParams(120, 160));
        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        iv.setBackgroundResource(mGalleryItemBackground);
		return iv;
	}

}
时间: 2024-10-10 08:42:55

android之路Gallery 画廊的相关文章

android学习---Gallery画廊视图

Gallery与Spinner有共同父类:AbsPinner,说明Gallery与Spinner都是一个列表框.它们之间的区别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框.Spinner的作用是供用户选择,而Gallery则允许用户通过拖动查看上一个,下一个. Gallery用法与Spinner的用法形似,只要为它提供一个内容Adapter就可以了.Adapter的getView方法返回View作为Gallery列表的列表项.如果程序需要监控Gal

Android新手入门2016(15)--Gallery画廊

本文来自肥宝传说之路,引用必须注明出处! Gallery是Android查看图片的一个工具,用户使用非常方便. 可以通过左右滑动来查看不同的图片 代码比较简单,但是还是搞了一整天,因为碰到了一些问题. 主要是图片的来源问题,这里是通过Java的映射机制和R文件来获得drawable目录下的图片. 不过要注意,drawable类里面是有很多系统本身的属性,有些是不能显示出来的,所以要过滤,否则会报错. 另外放在drawable里面的图片,必须是png格式的.解决这两个问题就好办很多了. activ

Gallery画廊视图

画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕上添加Gallery组件,通常使用标记在XML而布局文件中添加. 画廊视图在4.0后已经过期,但是我们仍然可以使用,不过后面我们将用水平的ListView自定义组件来实现这个效果,在自定义视图中讲解. 常用属性:1. android:animationDuration 用于设置列表项切换时的动画持续时间2. and

Android学习之-----Gallery

在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动.Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止 1.XML布局 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tool

仿百度壁纸client(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化

仿百度壁纸client(六)--完结篇之Gallery画廊实现壁纸预览已经项目细节优化 百度壁纸系列 仿百度壁纸client(一)--主框架搭建,自己定义Tab + ViewPager + Fragment 仿百度壁纸client(二)--主页自己定义ViewPager广告定时轮播图 仿百度壁纸client(三)--首页单向,双向事件冲突处理,壁纸列表的实现 仿百度壁纸client(四)--自己定义上拉载入实现精选壁纸墙 仿百度壁纸client(五)--实现搜索动画GestureDetector

UI组件之AdapterView及其子类(四)Gallery画廊控件使用

听说 Gallery如今已经不使用了,API使用ViewPaper取代了,以后再学专研ViewPaper吧如今说说Gallery画廊,就是不停显示图片的意思 Gallery是用来水平滚动的显示一系列项目.Gallery组件能够横向显示一个图像列表,当单击当前图像的后一个图像时,这个图像列表会向左移动一格,当单击当前图像的前一个图像时,这个图像列表会向右移动一样. 也能够通过拖动的方式来向左和向右移动图像列表在使用Gallery的时候,我们应指定他的背景.不然它的项目会紧凑的贴在一起.不会产生画廊

仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化

仿百度壁纸客户端(六)--完结篇之Gallery画廊实现壁纸预览已经项目细节优化 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端(二)--主页自定义ViewPager广告定时轮播图 仿百度壁纸客户端(三)--首页单向,双向事件冲突处理,壁纸列表的实现 仿百度壁纸客户端(四)--自定义上拉加载实现精选壁纸墙 仿百度壁纸客户端(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 仿百度壁纸客

Android ImageSwitcher和Gallery的使用

前几天,听说室友的老师要求他们做一个图片效果.其效果如下图所示(可左右滑动切换图片): 我当时晃眼一看,第一感觉好高级的样子.我还没做过这种效果呢,但室友说他们同学已经有人做出来了,我觉得既然有人做出来了,那么我也应该做出来,于是上个星期五的时候在教室研究了一下午,最后在网上找到了两个Demo都与这个效果类似但又不完全一样,果断下载下来研究研究,结果才发现其实这个效果并没有你想的那么难. 废话不多说,上代码: main.xml:(其实就是两个控件的使用ImageSwitcher和Gallery)

【喵&quot;的Android之路】【番外篇】有关于null的一些知识点

[喵"的Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象.因此,下面的做法是错误的: int a = null; 但: Object obj = null; 是可以的,因为null表示Object类型的一个空对象引用,符合其用意. [注1]引用类型使用null声明对象变量后,无法使用该变量访问对象的成员.例如上述obj对象如果使用obj.toString()