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

Android使用Gallery实现照片拖动的特效

程序员文章站 2024-01-08 21:31:34
今天要分享一个非常简单的功能:使用android原生控件gallery实现照片拖动的特效实现思路如下: 在布局文件中定义一个gallery控件 由于要显示多张图,为了方便,我直接引用了androi...

今天要分享一个非常简单的功能:

使用android原生控件gallery实现照片拖动的特效

实现思路如下:

  1. 在布局文件中定义一个gallery控件
  2. 由于要显示多张图,为了方便,我直接引用了android原生的图片资源
  3. gallery只是一个控件,为了将图片数据跟控件进行绑定,还需要一个继承baseadapter的自定义适配器

源码如下:

1、主activity和自定义内部类imageadapter:

import android.app.activity;
import android.content.context;
import android.os.bundle;
import android.util.log;
import android.view.view;
import android.view.viewgroup;
import android.widget.baseadapter;
import android.widget.gallery;
import android.widget.imageview;
import com.example.memorydemo.r;

public class simplegallery extends activity {

  private static final string tag = "simplegallery";

  @override
  protected void oncreate(bundle onsavedinstance) {
    super.oncreate(onsavedinstance);
    setcontentview(r.layout.simple_gallery_layout);

    gallery gallery = findviewbyid(r.id.gallery);
    gallery.setadapter(new imageadapter(this));
  }

  private class imageadapter extends baseadapter {

    // 这里我们使用android原生的资源图标
    private int[] imageids = {
        android.r.drawable.btn_minus,
        android.r.drawable.btn_radio,
        android.r.drawable.ic_lock_idle_low_battery,
        android.r.drawable.ic_menu_camera };

    private context mcontext;

    public imageadapter(context context) {
      mcontext = context;
    }

    @override
    public int getcount() {
      return imageids.length;
    }

    @override
    public object getitem(int position) {
      return imageids[position];
    }

    @override
    public long getitemid(int position) {
      return position;
    }

    @override
    public view getview(int position, view convertview, viewgroup parent) {
      imageview imageview;
      if (convertview == null) {
        log.i(tag, "convertview is null, create new imageview");
        imageview = new imageview(mcontext);
      } else {
        log.i(tag, "cast convertview to imageview");
        imageview = (imageview) convertview;
      }

      imageview.setimageresource(imageids[position]);
      imageview.setscaletype(imageview.scaletype.fit_xy);
						
		  // 注意这里要用gallery.layoutparams作为布局参数类型,源码中给出了建议(views given to the gallery should use 
			// gallery.layoutparams s their ayout parameters type)
			// 由于android原生图片很小,我将高度设置为 500,方便看效果
      imageview.setlayoutparams(new gallery.layoutparams(viewgroup.layoutparams.match_parent, 500));
      return imageview;
    }
  }
}

2、布局文件 simple_gallery_layout.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">

  <gallery
      android:id="@+id/gallery"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

</linearlayout>

注意:

gallery控件其实已经被废弃了,建议用 horizontalscrollview 和 viewpager 代替,源码中是这么解释的:

@deprecated this widget is no longer supported. other horizontally scrolling widgets include {@link horizontalscrollview} and {@link android.support.v4.view.viewpager} from the support library.

后续会分享 horizontalscrollview 和 viewpager这两个控件是如何使用的。

以上就是android使用gallery实现照片拖动的特效的详细内容,更多关于android 照片拖动特效的资料请关注其它相关文章!

上一篇:

下一篇: