Android开发之实现手指直接拖动图片移动

一、基础知识:

 要实现这一效果,需要一个容器来存放Gallrey显示的图片,这里使用一个继承自BaseAdapter类的派生类来装这些图片。

我们需要监听其事件setOnItemClickListener,从而确定用户当前选中的是哪一张图片。

首先,需要将所有要显示的图片的索引存放在一个int型数组中,然后通过setImageResource方法来设置ImageView要显示的图片资源,最后将

每张图片的ImageView显示在屏幕上。

 

二、代码展示:

1."main.xml"

[html]

<?xml version="1.0" encoding="utf-8"?> 

<Gallery  

xmlns:android="http://schemas.android.com/apk/res/android"  

  android:id="@+id/Gallery01" 

  android:layout_width="fill_parent" 

  android:layout_height="wrap_content" 

/> 

<?xml version="1.0" encoding="utf-8"?>

<Gallery

xmlns:android="http://schemas.android.com/apk/res/android"

  android:id="@+id/Gallery01"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

/>

 

2."Activity01.java"

[java] view plaincopyprint?package com.yarin.android.XX; 

 

import android.app.Activity; 

import android.os.Bundle; 

import android.view.View; 

import android.widget.AdapterView; 

import android.widget.Gallery; 

import android.widget.Toast; 

import android.widget.AdapterView.OnItemClickListener; 

 

public class Activity01 extends Activity 

    /** Called when the activity is first created. */ 

    @Override 

    public void onCreate(Bundle savedInstanceState) 

    { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

 

        //获得Gallery对象  

        Gallery g = (Gallery) findViewById(R.id.Gallery01); 

 

        //添加ImageAdapter给Gallery对象  

        g.setAdapter(new ImageAdapter(this)); 

 

        //设置Gallery的背景  

        g.setBackgroundResource(R.drawable.bg0); 

         

        //设置Gallery的事件监听  

        g.setOnItemClickListener(new OnItemClickListener() { 

            public void onItemClick(AdapterView<?> parent, View v, int position, long id) 

            { 

                Toast.makeText(Activity01.this,"你选择了"+(position+1)+" 号图片",  

                    Toast.LENGTH_SHORT).show(); 

            } 

        }); 

    } 

package com.yarin.android.XX;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.Gallery;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

public class Activity01 extends Activity

{

 /** Called when the activity is first created. */

 @Override

 public void onCreate(Bundle savedInstanceState)

 {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  //获得Gallery对象

  Gallery g = (Gallery) findViewById(R.id.Gallery01);

  //添加ImageAdapter给Gallery对象

  g.setAdapter(new ImageAdapter(this));

  //设置Gallery的背景

  g.setBackgroundResource(R.drawable.bg0);

  

  //设置Gallery的事件监听

  g.setOnItemClickListener(new OnItemClickListener() {

   public void onItemClick(AdapterView<?> parent, View v, int position, long id)

   {

          Toast.makeText(Activity01.this,"你选择了"+(position+1)+" 号图片",

              Toast.LENGTH_SHORT).show();

   }

  });

 }

}

 

3."ImageAdapter.java"

[java]

package com.yarin.android.XX; 

 

import android.content.Context; 

import android.view.View; 

import android.view.ViewGroup; 

import android.widget.BaseAdapter; 

import android.widget.Gallery; 

import android.widget.ImageView; 

 

public class ImageAdapter extends BaseAdapter 

    // 定义Context  

    private Context     mContext;        

    // 定义整型数组 即图片源  

    private Integer[]   mImageIds =  

    {                        

            R.drawable.img1,  

            R.drawable.img2,  

            R.drawable.img3,  

            R.drawable.img4,  

            R.drawable.img5,  

            R.drawable.img6,  

            R.drawable.img7, 

            R.drawable.img8,         

    }; 

 

    // 声明 ImageAdapter  

    public ImageAdapter(Context c) 

    { 

        mContext = c; 

    } 

 

    // 获取图片的个数  

    public int getCount() 

    { 

        return mImageIds.length; 

    } 

 

    // 获取图片在库中的位置  

    public Object getItem(int position) 

    { 

        return position; 

    } 

 

    // 获取图片ID  

    public long getItemId(int position) 

    { 

        return position; 

    } 

 

    public View getView(int position, View convertView, ViewGroup parent) 

    { 

        ImageView imageview = new ImageView(mContext); 

 

        // 给ImageView设置资源  

        imageview.setImageResource(mImageIds[position]); 

        // 设置布局 图片120×120显示  

        imageview.setLayoutParams(new Gallery.LayoutParams(120, 120)); 

        // 设置显示比例类型  

        imageview.setScaleType(ImageView.ScaleType.FIT_CENTER); 

        return imageview; 

    } 

package com.yarin.android.XX;

import android.content.Context;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter

{

 // 定义Context

 private Context  mContext;  

 // 定义整型数组 即图片源

 private Integer[] mImageIds =

 {       

   R.drawable.img1,

   R.drawable.img2,

   R.drawable.img3,

   R.drawable.img4,

   R.drawable.img5,

   R.drawable.img6,

   R.drawable.img7,

   R.drawable.img8,  

 };

 // 声明 ImageAdapter

 public ImageAdapter(Context c)

 {

  mContext = c;

 }

 // 获取图片的个数

 public int getCount()

 {

  return mImageIds.length;

 }

 // 获取图片在库中的位置

 public Object getItem(int position)

 {

  return position;

 }

 // 获取图片ID

 public long getItemId(int position)

 {

  return position;

 }

 public View getView(int position, View convertView, ViewGroup parent)

 {

  ImageView imageview = new ImageView(mContext);

  // 给ImageView设置资源

  imageview.setImageResource(mImageIds[position]);

  // 设置布局 图片120×120显示

  imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));

  // 设置显示比例类型

  imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);

  return imageview;

 }

}

 

 

三、效果展示:

  开发之实现手指直接拖动图片移动-android 手指拖动图片">

时间: 2024-12-31 05:29:40

Android开发之实现手指直接拖动图片移动的相关文章

Android开发中尽量避免使用jpg图片

由于jpg容易失真,所以在Android开发中尽量避免使用.jpg图片,而应该使用.png图片,它采用了从LZ77派生的无损数据压缩算法. 其实关于这点,Google已经暗示我们了: 发现了没有,在res下这些icon用的都是png格式.就是说Google推荐使用的是png格式的图片. 写到这,想起个小事,童鞋问:在命名一个Activity对应的布局文件的时候,怎么样算规范一些. 其实我们在新建一个Activity的时候,也可以在看到一些端倪: 如果你建立一个MainActivity那么默认的它

Android开发重写Animation实现下拉图片后弹射回去效果示例

本文实例讲述了Android开发重写Animation实现下拉图片后弹射回去效果.分享给大家供大家参考,具体如下: 1. 解析: 1)interpolatedTime指的是平移的变化率(从0到1) 2)mStartHeight 控件开始的高度 3)endHeight 控件竖直移动后的高度 4)mImageView.requestLayout(); 图片在改变高度后填充布局并固定 5)ValueUtil.evalute(interpolatedTime, mStartHeight, mEndHei

Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法

本文实例讲述了Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法.分享给大家供大家参考,具体如下: 一.如图 二.代码实现 public class ColorImageActivity extends Activity { private ImageView mImageView; private SeekBar mSBRed,mSBGreen,mSBBlue,mSBAlpha,mSBLight; //修改后的图片 private Bitmap mModBitmap; //画布

安卓(Android)开发之分享带文字的图片_Android

前言 想想我们常用的网易云音乐,允许我们把歌词连带着歌曲的图片拼在一起变成一张图,我们再把这张图片分享出去就好了. 那么,本篇的内容就是动手做一个带文字的图片. 这里也记录下上下文,因为做了一个失物招领的App,当有人上交了失物之后,可以将这个消息分享出去,这个消息内容有物品的信息和图片,而微信SDK始终无法做到,就想着把物品信息嵌入到图片中分享出去,先放一个效果图:   这个分享出去的图片很简单,上面是图片,下面是文字组合在一起.  先要知道,方案的原理是通过操作一个以Bitmap为基础的Ca

【Android开发】图形图像处理技术-绘制图片

在Android中,Canvas类不仅可以绘制几何图形.文件和路径,还可以用来绘制图片.想要使用Canvas类绘制图片,只需要使用Canvas类提供的如下表所示的方法将Bitmap对象中保存的图片绘制到画布上即可. drawBitmap(Bitmap bitmap,Rect src,RectF dst,Paint paint) 用于从指定点绘制从源位图中"挖取"的一块 drawBitmap(Bitmap bitmap,float left,float top,Paint paint)

Android开发之搜芽项目的图片加载问题(使用Volley进行网络图片加载)

搜芽的移动开发这几天进度相对来说非常的快.但是美中不足的就是网络图片的加载问题.我有两套方案: 1)沿用迅雷动漫的图片加载.迅雷动漫也是用的一个开源的库.但是不知道是我使用出了问题还是真的是它的问题.在我迅速的下拉和回倒的时候, 不确定的会出现崩溃.logcat显示loadImage里面出现了内存溢出.out of memory..这个我想应该不是我的问题. 2)采用外包的AsyncImageLoader.这个文件我没有仔细看.然后实验结果是,加载图片巨慢.而且容易导致卡顿. 所以,我将希望转向

安卓(Android)开发之分享带文字的图片

前言 想想我们常用的网易云音乐,允许我们把歌词连带着歌曲的图片拼在一起变成一张图,我们再把这张图片分享出去就好了. 那么,本篇的内容就是动手做一个带文字的图片. 这里也记录下上下文,因为做了一个失物招领的App,当有人上交了失物之后,可以将这个消息分享出去,这个消息内容有物品的信息和图片,而微信SDK始终无法做到,就想着把物品信息嵌入到图片中分享出去,先放一个效果图: 这个分享出去的图片很简单,上面是图片,下面是文字组合在一起. 先要知道,方案的原理是通过操作一个以Bitmap为基础的Canva

Android开发从相机或相册获取图片裁剪_Android

废话不多说了,直接给大家贴代码了. package com.only.android.app; import java.io.File; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.gr

android开发-新手--gallery怎么不能显示图片

问题描述 新手--gallery怎么不能显示图片 package com.example.gallery; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.Ad