Android 小項目之---Iphone拖动图片特效 (附源码)

  曾经被Iphone用手指在屏幕上滑来滑去拖动图片的操作方式吸引吗?在Android里头,这并不是什么难事。

  所需要的技术点如下:Android.content.Context 、Android.widget.BaseAdapter、Android.widget.ImageView等通常会用在设计相册、

图片类型的选择器上。

  在开始之前,必须了解什么是Context以及widget里的 BaseAdpater ,在Acitivity当中,Context就如同是张Canvas画布,随时等着被处理或覆盖。

     示例运行结果如图:

          主程序中较为重要的部分是在其中创建一个继承自BaseAdapter的ImageAdapter方法,这个ImageAdapter的存在目的,是为了要暂存欲显示的图片,

并作为Gallery控件图片的源引用(在这里我们可以用.Net的Ado.Net来理解 比如把BaseAdpater理解成SqlDataAdapter的数据适配器,而我们要填充的是

Gallery的一个方法为setAdapter 可以暂时理解成Dataset 这样子应该好理解一点)

           OK,现在到了我们代码实现功能的步骤了:

 

ExpandedBlockStart.gif代码
 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.content.*;
 4 import android.graphics.*
 5 import android.view.View;
 6 import android.view.ViewGroup;
 7 import android.widget.*;
 8 public class ImageGallery extends Activity {
 9     private TextView mTextView;
10     private Gallery mGallery;
11     /** Called when the activity is first created. */
12     @Override
13     public void onCreate(Bundle savedInstanceState) {
14         super.onCreate(savedInstanceState);
15         setContentView(R.layout.main);
16         mTextView=(TextView)findViewById(R.id.TextView01);
17         mGallery=(Gallery)findViewById(R.id.Gallery01);
18         mTextView.setText(R.string.about);
19         mTextView.setTextColor(Color.BLUE);
20        mGallery.setAdapter(new ImageApdater(this));
21     }
22     
23     public class ImageApdater extends BaseAdapter{
24 
25         //类成员myContext为context父类
26         private Context myContext;
27         private int[] myImageIds=
28                 R.drawable.a,
29                 R.drawable.b,
30                 R.drawable.c,
31                 R.drawable.d,
32                 R.drawable.e
33         };
34         //构造函数,有一个参数,即要存储的Context
35         public ImageApdater(Context c) {
36             // TODO Auto-generated constructor stub
37             this.myContext=c;
38         }
39 
40         //返回所有的图片总数量
41         @Override
42         public int getCount() {
43             // TODO Auto-generated method stub
44             return this.myImageIds.length;
45         }
46 
47         //利用getItem方法,取得目前容器中图像的数组ID
48         @Override
49         public Object getItem(int position) {
50             // TODO Auto-generated method stub
51             return position;
52         }
53 
54         
55         @Override
56         public long getItemId(int position) {
57             // TODO Auto-generated method stub
58             return position;
59         }
60 
61         //取得目前欲显示的图像的VIEW,传入数组ID值使之读取与成像
62         @Override
63         public View getView(int position, View convertView, ViewGroup parent) {
64             // TODO Auto-generated method stub
65             ImageView i=new ImageView(this.myContext);
66             i.setImageResource(this.myImageIds[position]);
67             i.setScaleType(ImageView.ScaleType.FIT_XY);
68             //i.setLayoutParams(new Gallery.LayoutParams(120,120));  //设置高度和宽度
69             
70             return i;
71         }
72         
73     }
74 }

 

             注:继承BaseAdapter这个类,系统会默认为我们重写以上的所有方法,我们要做的只是在生成好的方法里面处理即可,之后返回所需要的数据。

 

 

源码如下:点击下载/Files/TerryBlog/ImageGallery.rar

 

如下有不懂请QQ 285735942   或  Email:terrryyhl@gmail.com

转载于:https://www.cnblogs.com/TerryBlog/archive/2010/05/17/1737789.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jq绑定的事件不生效

不知道什么原因,写了一段代码之后,绑定的所有的jq事件都不生效了。后来百度了一下,这里列出一种方法。 转载:https://www.jb51.net/article/46666.html $("#ceshisub").bind("click",function(){ var a1; …

Python笔记_第三篇_面向对象_6.继承(单继承和多继承)

1. 概念解释: 继承:有两个类:A类和B类。那么A类就拥有了B类中的属性和方法。 * 例如:Object:是所有类的父亲,还可以成为基类或者超类(super()) * 继承者为子类,被继承者成…

文本内容之间的关键词提取和相似度计算

背景 Web应用程序变得越来越智能。 从网站上使用服务的日子已经一去不复返了,用户不得不填写一个巨大的表格。 假设您有一个适合书迷的网站。 在Web 2.0之前,此类网站曾经以诸如年龄,阅读书籍,喜欢的书籍类型,语言偏好…

Windows XP SP3支持多用户远程桌面连接

远程桌面连接的确很方便,但是在Windows XP中只支持单一用户的连接,当第二个用户连接时,第一个用户就被迫断开并回到用户登录界面了,这可和多任务的操作系统理念不符啊,或许微软是为了突出Server系统的特点吧&#xff0…

构建用于测试的超大型内存InputStream

由于某种原因&#xff0c;我需要非常大的&#xff0c;甚至可能是无限的InputStream &#xff0c;它会反复地反复返回相同的byte[] 。 这样&#xff0c;我可以通过重复小样本来产生大量的数据流。 在Guava中可以找到类似的功能&#xff1a; Iterable<T> Iterables.cycle(I…

linux 调试小经验

1、查看netlink socket 丢包 cat /proc/net/netlink sk Eth Pid Groups Rmem Wmem Dump Locks Drops Inode c91eda00 0 1172 00000001 0 0 00000000 2 0 27767 c43eee00 0 -4099 00000000 0 0 00000000 2 0 41200 c9266e00 0 1186 00000000 0 0 00000000 2 0 28922 c1af580…

前端打印功能

方法一&#xff1a; html代码&#xff1a; 在要打印的内容上加入&#xff1a;<!--startprint-->和<!--endprint--> js代码&#xff1a; $(.printData).click(function(){bdhtmlwindow.document.body.innerHTML; sprnstr"<!--startprint-->"; …

Vlc支持IE 360 低版本的Google浏览器

VLC 插件代码&#xff1a; <object typeapplication/x-vlc-plugin pluginspage"http://www.videolan.org/" idvlc eventsfalse width"720" height"410"><param namemrl valuertsp://admin:123456******:554/h264/ch1/main/av_stream /&…

同步多线程

同步多线程&#xff08;SMT&#xff09;是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上&#xff0c;同步多线程是一种将线程级并行处理&#xff08;多CPU&#xff09;转化为指令级并行处理&#xff08;同一CPU&#xff09;的方法。 同步多线…

如何使用布隆过滤器在Java中建立大容量的内存缓存

背景 缓存是解决日常软件问题的重要概念。 您的应用程序可能会执行CPU密集型操作&#xff0c;而您又不想一次又一次地执行这些操作&#xff0c;而是只导出一次结果并将其缓存在内存中。 有时瓶颈是IO&#xff0c;例如您不想重复访问数据库&#xff0c;并且想缓存结果并仅在基础…

Centos7安装Python3的方法

由于centos7原本就安装了Python2&#xff0c;而且这个Python2不能被删除&#xff0c;因为有很多系统命令&#xff0c;比如yum都要用到。 [rootVM_105_217_centos Python-3.6.2]# python Python 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)…

ajax请求导致status为canceled的原因

在使用layui的form表单提交以后&#xff0c;请求状态总是canceled。后来在form表单的后面添加了一行代码&#xff1a; return false; 就可以了。 文档&#xff1a;https://www.layui.com/doc/modules/form.html#onsubmit 错误&#xff1a; 解决方法&#xff1a; 总结一下&…

CSS图片水平垂直居中

Html: <div id"MainContent"><img src"QQ截图20150515140512.png" width"247" height"192"></img></div></div> CSS: #MainContent {display:table-cell;width: 700px;height: 800px;background: #0C78…

如何开启OpenSSL和mcrypt

1&#xff0c;要想开启mcrypt支持&#xff0c;系统需要安装了libmcrypt.dll库。这个一般用户是没有安装过的&#xff0c;但不用担心&#xff0c;PHP的windows发行包里已经给我们附带了此文件&#xff0c;在PHP压缩包的根目录下即可找到&#xff0c;然后将其复制到%system%/syst…

如果BigDecimal是答案,那肯定是一个奇怪的问题

总览 许多开发人员已确定BigDecimal是处理金钱的唯一方法。 通常&#xff0c;他们通过用BigDecimal替换double来确定错误或十个错误。 我对此没有说服力的是&#xff0c;也许他们可以解决double处理中的错误以及使用BigDecimal的额外开销。 根据我的比较&#xff0c;当被问到改…

算法思想_常见四种

文章目录常用算法思想描述穷举算法思想1. 基本思想2. 步骤3.实例递推算法1. 基本思想2. 步骤3. 实例递归算法1. 基本思想2. 步骤3. 实例1. 分治算法1. 基本思想2. 步骤3. 实例概率算法1. 基本思想2. 步骤3. 实例如果还有时间&#xff0c;将继续更新常用算法思想描述 穷举算法思…

[转] 做个自强不息的青年

人的出生和际遇本身造就了每个人的道路都不同&#xff0c;对于青年人来说&#xff0c;如何能够面对逆顺&#xff0c;如何面对起伏&#xff0c;如何能够正确设定理想并为之激发生命的火焰&#xff0c;在持续的奋斗中不断提升自我&#xff0c;自强不息而自立利他&#xff1f;在与…

commonJS — 全局操作(for Window)

for Window github: https://github.com/laixiangran/commonJS/blob/master/src/forWindow.js 代码 /*** Created by laixiangran on 2016/1/24* homepage&#xff1a;http://www.cnblogs.com/laixiangran/* for Window*/ (function() {var com window.COM window.COM || {}…

点击返回上一页失效

点击取消的时候&#xff0c;返回上一页&#xff0c;没有效果&#xff0c;仍然停留在当前页&#xff0c;还报500&#xff1b;改成window.history.go(-1)也不生效 代码&#xff1a; <button class"st-btn-normal st-btn-cancel cancle" onclick"javascript:wi…

如何通过7个Logback调整立即改善Java日志记录

基准测试可帮助您发现Logback在压力下的性能 日志记录对于服务器端应用程序是必不可少的&#xff0c;但这是有代价的。 令人惊讶的是&#xff0c;微小的更改和配置调整对应用程序的日志记录吞吐量有多大影响。 在这篇文章中&#xff0c;我们将根据每分钟的日志条目对Logback的性…