当前位置: 移动技术网 > IT编程>移动开发>Android > Android 组件Gallery和GridView示例讲解

Android 组件Gallery和GridView示例讲解

2019年07月24日  | 移动技术网IT编程  | 我要评论

洛克王国碧水玲珑,惊世侠传,那一幕我难以忘怀

android gallery和gridview组件:

gallery 画廊

gallery是一个内部元素可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局组件。

我们还是直接看看例子的运行效果。

下面上代码,相关解释都放在代码里了。

1、建立一个新项目 hellogallery

2、拷贝wallpaper_0.jpg…wallpaper_9.jpg 10个图片文件到res/drawable目录

3、res/layout/main.xml文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<framelayout android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/framelayout01">
<imageview android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/imageview01" android:src="@drawable/wallpaper_0">
</imageview>

<gallery android:layout_height="wrap_content" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery01" android:spacing="5dp">
</gallery>
</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>
</resources>

5、在mainhellogallery.java中的内容如下:

package android.basic.lesson13;

import android.app.activity;
import android.content.context;
import android.content.res.typedarray;
import android.os.bundle;
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 mainhellogallery extends activity {

  /** called when the activity is first created. */
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);

    //定义ui组件
    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(mainhellogallery.this, "" + position,
            toast.length_long).show();
        //设置背景部分的imageview显示当前item的图片
        iv.setimageresource(((imageview)view).getid());
      }
    });
  }

  //定义继承baseadapter的匹配器
  public class imageadapter extends baseadapter {

    //item的修饰背景
    int mgalleryitembackground;

    //上下文对象
    private context mcontext;

    //图片数组
    private integer[] mimageids = { r.drawable.wallpaper_0,
        r.drawable.wallpaper_1, r.drawable.wallpaper_2,
        r.drawable.wallpaper_3, r.drawable.wallpaper_4,
        r.drawable.wallpaper_5, r.drawable.wallpaper_6,
        r.drawable.wallpaper_7, r.drawable.wallpaper_8,
        r.drawable.wallpaper_9 };

    //构造方法
    public imageadapter(context c){
      mcontext = c;
      //读取styleable资源
    typedarray a = 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;
    }

    //返回项目id
    @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;
    }

  }
}

我们点击某一张图片,会把该子元素的图片显示在放在后面一层的imageview组件中。有兴趣的同学可以了解一下adapterview的继承关系:

以上就是对android gallery 和 gridview 组件的介绍,后续继续对相关知识补充,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网