Android使用Gallery实现照片拖动的特效
作者:snowyeti 发布时间:2022-12-31 23:04:22
标签:Android,照片拖动,Gallery
今天要分享一个非常简单的功能:
使用Android原生控件Gallery实现照片拖动的特效
实现思路如下:
在布局文件中定义一个Gallery控件
由于要显示多张图,为了方便,我直接引用了Android原生的图片资源
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这两个控件是如何使用的。
来源:https://juejin.cn/post/6920058927728361480


猜你喜欢
- 1.问题:昨天把项目打包放到国产中间件东方通(外部容器,功能类似Tomcat)上时,发现某些请求下载文件的接口不能正确返回文件,而是返回一个
- 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于
- 关键点 为什么不能使用String.compareTo方法来比较客户端版本号? &
- 本文纯干货,贴上PDF文档操作类C#代码,需要添加iTextSharp.dll引用才可以正常通过编译。废话不多说了,直接给大家贴代码了。代码
- 一、 ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制
- 1.MyBatis动态SQLMyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串。如果你有使用 JDBC 或其他类似框架的
- 依赖注入介绍先回顾下依赖注入的概念:我们常提起的依赖注入(Dependency Injection)和控制反转(Inversion of C
- 因为系统的菜单列表是不轻易改变的,所以不需要在每次请求的时候都去查询数据库,所以,在第一次根据用户id请求到菜单列表的时候,可以把菜单列表的
- 拼图小游戏,学习阶段。很多不足,改进了一下演示图片:J_Puzzle.javaimport java.awt.BorderLayout;im
- 前言Webp是Google推出的一种新型图片格式,相比于 传统的PNG/JPG图片有着更小体积的优势,在Web中有着广泛的应用。由于Webp
- Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android
- spring validation多层对象校验1、第一层对象定义import java.io.Serializable; import ja
- 参数和返回值得加密目的为了保证接口不被人拦截下来恶意请求,保证程序的稳定性,我们可以使用接口加密的方法来保证参数和返回值的保密性。具体实现方
- 前端模板框架为Bootstrap,系统分为前台和后台。后台主要为管理员角色,功能有:商品类型管理、商品管理、订单管理、会员管理、管理员管理等
- 使用filter()取出自己所需数据java8的filter()方法是取出自己所需的数据,返回满足条件里的数据person.javapack
- 前言有时候我们开发时会发现有些方法调用非常多,但它的默认的调用方法却要传很多参数进去而且还得记得调用具体的写法,比如Toast,不止要调用m
- 前面聊了布隆过滤器,回归认识一下位图BitMap,阅读前文的同学应该发现了布隆过滤器本身就是基于位图,是位图的一种改进。位图先看一个问题,
- 这两天看到Hibernate的代理部分,第一反应是底层使用了反射,针对用户实体生成了代理类,后来反应过来了,反射没有任何可以产生新类的能力,
- BitArray的基础可以看菜鸟编程BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),
- 本文实例讲述了C#可用于登录验证码的四位随机数生成方法。分享给大家供大家参考。具体实现方法如下:这里提供了两种方法,调用其一即可:using