欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发实现Gallery画廊效果的方法

程序员文章站 2023-11-07 15:31:10
本文实例讲述了android开发实现gallery画廊效果的方法。分享给大家供大家参考,具体如下: 画廊 使用gallery表示,按水平方向显示内容,并且可以用手指直接拖...

本文实例讲述了android开发实现gallery画廊效果的方法。分享给大家供大家参考,具体如下:

画廊 使用gallery表示,按水平方向显示内容,并且可以用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,可以响应事件显示信息。

xml布局文件基本语法

<gallery
属性列表
/>

gallery支持4中xml属性

属性名称
描述
android:animationduration
设置布局变化时动画的转换所需的时间(毫秒级)。仅在动画开始时计时。该值必须是整数,比如:100。
android:gravity
指定在对象的x和y轴上如何放置内容。指定一下常量中的一个或多个(使用 “|”分割)

constant
value
description
top
0×30
紧靠容器顶端,不改变其大小
bottom
0×50
紧靠容器底部,不改变其大小
left
0×03
紧靠容器左侧,不改变其大小
right
0×05
紧靠容器右侧,不改变其大小
center_vertical
0×10
垂直居中,不改变其大小
fill_vertical
0×70
垂直方向上拉伸至充满容器
center_horizontal
0×01
水平居中,不改变其大小
fill_horizontal
0×07
水平方向上拉伸使其充满容器
center
0×11
居中对齐,不改变其大小
fill
0×77
在水平和垂直方向上拉伸,使其充满容器
clip_vertical
0×80
垂直剪切(当对象边缘超出容器的时候,将上下边缘超出的部分剪切掉)
clip_horizontal
0×08
水平剪切(当对象边缘超出容器的时候,将左右边缘超出的部分剪切掉)
android:spacing
(译者注:设置图片之间的间距)
android:unselectedalpha
设置未选中的条目的透明度(alpha)。该值必须是float类型,比如:“1.2”

效果的具体实现过程

layout:

<?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" >
  <gallery
    android:id="@+id/gallery"
    android:spacing="5px"     //设置列表项之间的间距为5像素
    android:unselectedalpha="0.5" //设置未被选中的列表项的透明度
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</linearlayout>

activity:

package xqx;
import com.example.xqx_lianxi.r;
import android.app.activity;
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 maingallery extends activity{
   //设置画廊图片
  private int[] imageid = new int[] { r.drawable.ic_launcher,r.drawable.ic_launcher,r.drawable.ic_launcher,r.drawable.ic_launcher,r.drawable.ic_launcher,r.drawable.ic_launcher};
  @override
  protected void oncreate(bundle savedinstancestate) {
    // todo auto-generated method stub
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main_gallery);
    //获取gallery组件
    gallery gallery = (gallery) findviewbyid(r.id.gallery);
    baseadapter adapter = new baseadapter() {
        //获取当前选项id
        @override
        public long getitemid(int position) {
          return position;
        }
        //获取当前选项值
        @override
        public object getitem(int position) {
          return position;
        }
        //获取数量
        @override
        public int getcount() {
          return imageid.length;
        }
      @override
      public view getview(int position, view convertview, viewgroup parent) {
        imageview imageview;  //声明imageview的对象
        if (convertview == null) {
          imageview = new imageview(maingallery.this); //创建imageview的对象
          imageview.setscaletype(imageview.scaletype.fit_xy); //设置缩放方式
          imageview.setlayoutparams(new gallery.layoutparams(500, 400));
          typedarray typedarray = obtainstyledattributes(r.styleable.gallery);
          imageview.setbackgroundresource(typedarray.getresourceid(
              r.styleable.gallery_android_galleryitembackground,
              0));
          imageview.setpadding(5, 0, 5, 0); //设置imageview的内边距
        }
        else
        {
          imageview = (imageview) convertview;
        }
        imageview.setimageresource(imageid[position]);
        return imageview;
      }
    };
      //将适配器与gallery关联
      gallery.setadapter(adapter);
      gallery.setselection(imageid.length / 2); //默认显示的图片的id
      //画廊图片的点击事件
      gallery.setonitemclicklistener(new onitemclicklistener() {
        @override
        public void onitemclick(adapterview<?> parent, view view,
            int position, long id) {
          toast.maketext(maingallery.this,
              "第" + string.valueof(position+1) + "张图片被选中",
              toast.length_short).show();
        }
      });
}
}

最后在res/values/string.xml中添加一段代码  ,这里对应activity中的51行

<declare-styleable name="gallery">
    <attr name="android:galleryitembackground" />
</declare-styleable>

这样便完成了一个画廊的效果

效果图:

Android开发实现Gallery画廊效果的方法

可以看到 一共有6张图片 默认显示第4张

gallery.setselection(imageid.length / 2); //默认显示的图片的id

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。