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,一经查实,立即删除!

相关文章

前端打印功能

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

同步多线程

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

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; 总结一下&…

点击返回上一页失效

点击取消的时候&#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的性…

JS中的编码

今天发现我输入的中文变成了另外一种格式&#xff0c;查了一下&#xff0c;原来是转换成了数字编码。在这里介绍一下数字编码和base64&#xff0c;做个记录 1.出现原因&#xff1a;在开发中经常需要对用户输入的数据进行编码然后才能通过HTTP请求发送给后台&#xff0c;或者对…

【Flutter】解决依赖版本冲突

为什么会存在版本依赖问题 我们在开发flutter项目中&#xff0c;常常会依赖第三方库。flutter依赖项越多&#xff0c;就越有可能出现依赖版本冲突。 Because new_trend depends on build_runner >0.9.0 which requires SDK version >2.0.0-dev.61 <3.0.0, version sol…

安装vue-cli时报错

今天用npm安装vue-cli时一直报错&#xff0c;后面百度说用cnpm重装&#xff0c;结果还是报错&#xff0c;后面找到一个博主的&#xff0c;说是vue升级的原因&#xff0c;vue init webpack hello-world 已经替换为 vue create hello-world npm install -g vue/cli-init # vue…

CenterNet算法笔记(目标检测论文)

论文名称&#xff1a;CenterNet: Keypoint Triplets for Object Detectiontection 论文链接&#xff1a;https://arxiv.org/abs/1904.08189 代码链接&#xff1a;https://github.com/Duankaiwen/CenterNet 简介 该论文是由中科院&#xff0c;牛津大学以及华为诺亚方舟实验室联合…

elementUI的container布局设置全屏宽度

进用element UI的 container 布局&#xff0c;发现不能全屏铺满 添加了一行代码&#xff1a; .el-container{height:100%;padding:0;margin:0;width:100%;}发现高度占满全屏&#xff0c;但是宽度还没有 继续给 html,body加了 width&#xff1a;100%&#xff1b;还是没有任何…

CSS border-radius边框圆角

在CSS3中提供了对边框进行圆角设定的支持&#xff0c;可对边框1~4个角进行圆角样式设置。 目录 1. 介绍 2. value值的格式和类型 3. border-radius 1~4个参数说明 4. 在线示例 1. 介绍 1.1 圆角属性 CSS3提供了5种圆角属性 border-radius &#xff1a;同时设置4个边框的…

element实现动态路由+面包屑

要掌握&#xff1a;localStorage&#xff0c;组件封装 ​​​​ emm&#xff0c;第一次上传视频转gif的图片&#xff0c;效果不咋好。。。 视频转gif 的软件连接 http://www.zxt2007.com/downloads.html 找到一个可以截取部分视频制作gif图的软件https://soft.onlinedo.cn/gif…

Oracle最新的Java 8更新破坏了您的工具-它是如何发生的?

如果您最近一直在关注Java世界的消息&#xff0c;那么您可能听说过Oracle发布的最新Java 8构建&#xff0c;Java 8u11&#xff08;和Java 7u65&#xff09;引入了错误并破坏了一些流行的第三方工具&#xff0c;例如ZeroTurnaround的JRebel&#xff0c;Javassist&#xff0c;Goo…

为什么选择Dojo - 记Dojo中文博客正式开张

公告栏里写到&#xff1a;Dojo的高门槛一旦跨过&#xff0c;必将别无所求。含义有二&#xff1a;第一&#xff0c;Dojo难学&#xff1b;第二&#xff0c;Dojo很强大。 这也揭示了本博客的目标&#xff1a;帮助大家用好Dojo这个优秀的Ajax框架。 在回答为什么选择Dojo之前&#…

ExtJS 4.2 第一个程序

本篇介绍如何创建一个ExtJS应用程序。并通过创建目录、导入文件、编写代码及分析代码等步骤来解释第一个ExtJS程序。 目录 1. 创建程序 1.1 创建目录建议 1.2 实际目录 1.3 index.html 1.4 运行图 2. 代码分析 2.1 Ext.onReady() 2.2 Ext.create() 1. 创建程序 1.1 创建目录…

ZooKeeper,策展人以及微服务负载平衡的工作方式

Zookeeper如何确保每位工人都能愉快地从工作委托经理那里得到一些工作。 Apache ZooKeeper是注册&#xff0c;管理和发现在不同计算机上运行的服务的工具。 当我们必须处理具有许多节点的分布式系统时&#xff0c;它是技术堆栈中必不可少的成员&#xff0c;这些节点需要知道其…

elementUI清空弹框中的表单数据

点击此处直达应用场景示例 官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/form 补充&#xff1a;改变表头颜色&#xff1a; <el-table :data"tableData" border style"width: 100%" :header-cell-style"{background:#d3dce6,col…

.Net4.0 Parallel编程(三)Data Parallelism下

在上篇文章中介绍了如何Break、Stop循环&#xff0c;以及如何定义线程局部变量。在本文中介绍如何在外部去取消循环、以及异常的处理。 Cancel 在并行的循环中支持通过传递ParallelOptions参数中的CancellationToken进行取消循环的控制&#xff0c;我们可以CancellationTokenSo…