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

 更新时间:2021年01月22日 10:34:08   作者:snowyeti  
这篇文章主要介绍了Android如何使用Gallery实现照片拖动的特效,帮助大家更好的理解和利用Android进行开发,感兴趣的朋友可以了解下

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

使用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 照片拖动特效的资料请关注脚本之家其它相关文章!

相关文章

  • Android获取SD卡上图片和视频缩略图的小例子

    Android获取SD卡上图片和视频缩略图的小例子

    如果我们需要快速提取图片和视频缩略图可以直接访问android.provider.MediaStore.Images.Thumbnails 和android.provider.MediaStore.Video.Thumbnails这两个数据库,即可查询出来缩略图 。
    2013-06-06
  • 浅谈Android应用安全防护和逆向分析之apk反编译

    浅谈Android应用安全防护和逆向分析之apk反编译

    我们有时候在某个app上见到某个功能,某个效果蛮不错的,我们想看看对方的思路怎么走的,这时候,我们就可以通过反编译来编译该apk,拿到代码,进行分析。
    2021-06-06
  • Android仿微信语音聊天功能

    Android仿微信语音聊天功能

    这篇文章主要介绍了Android仿微信语音聊天功能,很实用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Android设备上非root的抓包实现方法(Tcpdump方法)

    Android设备上非root的抓包实现方法(Tcpdump方法)

    通常我们在Android应用中执行某个命令时会使用“Runtime.getRuntime().exec("命令路径")”这种方式,但是当我们执行抓包操作时,使用这条命令无论如何都不行,通过下面代码打印结果发现,该命令一定要在root权限下才能执行,具体实现思路,请参考本教程
    2016-11-11
  • Android基础之Activity生命周期

    Android基础之Activity生命周期

    activity类是Android 应用生命周期的重要部分。在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。
    2016-05-05
  • 内存泄露导致Android 中setVisibility() 失效原理

    内存泄露导致Android 中setVisibility() 失效原理

    这篇文章主要介绍了内存泄露导致Android 中setVisibility() 失效原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-07-07
  • 详解Android Flutter如何使用相机实现拍摄照片

    详解Android Flutter如何使用相机实现拍摄照片

    在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单的使用上相机的功能呢?一起来看看吧
    2023-04-04
  • android端微信支付V3版本地签名统一下单详解

    android端微信支付V3版本地签名统一下单详解

    本篇文章主要介绍了android端微信支付V3版本地签名统一下单,具有一定的参考价值,有兴趣的同学可以了解一下。
    2016-11-11
  • Android开发实现Launcher3应用列表修改透明背景的方法

    Android开发实现Launcher3应用列表修改透明背景的方法

    这篇文章主要介绍了Android开发实现Launcher3应用列表修改透明背景的方法,结合实例形式分析了Launcher3相关配置文件与功能函数修改设置操作技巧,需要的朋友可以参考下
    2017-11-11
  • Android学习笔记之ContentProvider和Uri详解

    Android学习笔记之ContentProvider和Uri详解

    本篇文章主要介绍了Android学习笔记之ContentProvider和Uri详解,对于学习Android的朋友具有一定的参考价值,有需要可以可以了解一下。
    2016-11-11

最新评论