- 浏览: 1207166 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
这是个图片浏览的例子;
刚在群里一个家伙给提供的思路:
1.Activity类Rotate.java文件
2.手势监听类
3.Rotate3d.java动画辅助类
4.main.xml
刚在群里一个家伙给提供的思路:
1.Activity类Rotate.java文件
package cn.com; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.widget.ImageView; public class Rotate extends Activity { GestureDetector gesture; int mCenterX = 160; int mCenterY = 0; ImageView mImageView1; ImageView mImageView2; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); FlingGuest sg = new FlingGuest(this); gesture = new GestureDetector(sg); mImageView1 = (ImageView) findViewById(R.id.image1); mImageView2 = (ImageView) findViewById(R.id.image2); } public void leftMoveHandle() { Rotate3d leftAnimation = new Rotate3d(0, -90, 0, 0, mCenterX, mCenterY); Rotate3d rightAnimation = new Rotate3d(90, 0, 0.0f, 0.0f, mCenterX, mCenterY); leftAnimation.setFillAfter(true); leftAnimation.setDuration(1000); rightAnimation.setFillAfter(true); rightAnimation.setDuration(1000); mImageView1.startAnimation(leftAnimation); mImageView2.startAnimation(rightAnimation); } public void rightMoveHandle() { Rotate3d leftAnimation = new Rotate3d(0, 90, 0, 0, mCenterX, mCenterY); Rotate3d rightAnimation = new Rotate3d(-90, 0, 0.0f, 0.0f, mCenterX, mCenterY); leftAnimation.setFillAfter(true); leftAnimation.setDuration(1000); rightAnimation.setFillAfter(true); rightAnimation.setDuration(1000); mImageView1.startAnimation(rightAnimation); mImageView2.startAnimation(leftAnimation); } // called automatically, any screen action will Triggered it public boolean onTouchEvent(MotionEvent me) { return gesture.onTouchEvent(me); } }
2.手势监听类
package cn.com; import android.app.Activity; import android.util.Log; import android.view.MotionEvent; import android.view.GestureDetector.OnGestureListener; public class FlingGuest implements OnGestureListener { Activity activity; int VALUE_DISTANCE = 100; int VALUE_SPEED = 20; public FlingGuest(Activity a) { activity = a; } // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发 public boolean onDown(MotionEvent e) { Log.d("TAG", "[+++++++++++][onDown]"); return true; } // e1, the begin of ACTION_DOWN MotionEvent // e2, the end of ACTION_DOWN MotionEvent // velocityX, the motion speed in X // velocityY:the motion speed in y // 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, // 多个ACTION_MOVE, 1个ACTION_UP触发 // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒 // 触发条件 : // X轴的坐标位移大于VALUE_DISTANCE,且移动速度大于VALUE_SPEED个像素/秒 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if ((e1.getX() - e2.getX() > VALUE_DISTANCE) && Math.abs(velocityX) > VALUE_SPEED) { Log.d("TAG", "[+++++++++++][onFling][Fling left]"); ((Rotate)activity).leftMoveHandle(); } else if ((e2.getX() - e1.getX() > VALUE_DISTANCE) && Math.abs(velocityX) > VALUE_SPEED) { Log.d("TAG", "[+++++++++++][onDown][Fling right]"); ((Rotate)activity).rightMoveHandle(); } return true; } // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发 public void onLongPress(MotionEvent e) { Log.d("TAG", "[+++++++++++][onLongPress]"); } // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("TAG", "[+++++++++++][onScroll]"); return true; } // 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发 // 注意和onDown()的区别,强调的是没有松开或者拖动的状态 public void onShowPress(MotionEvent e) { Log.d("TAG", "[+++++++++++][onShowPress]"); } // 用户(轻触触摸屏后)松开,由一个MotionEvent ACTION_UP触发 public boolean onSingleTapUp(MotionEvent e) { Log.d("TAG", "[+++++++++++][onSingleTapUp]"); return true; } }
3.Rotate3d.java动画辅助类
package cn.com; import android.graphics.Camera; import android.graphics.Matrix; import android.view.animation.Animation; import android.view.animation.Transformation; public class Rotate3d extends Animation { private float mFromDegree; private float mToDegree; private float mCenterX; private float mCenterY; private float mLeft; private float mTop; private Camera mCamera; private static final String TAG = "Rotate3d"; public Rotate3d(float fromDegree, float toDegree, float left, float top, float centerX, float centerY) { this.mFromDegree = fromDegree; this.mToDegree = toDegree; this.mLeft = left; this.mTop = top; this.mCenterX = centerX; this.mCenterY = centerY; } @Override public void initialize(int width, int height, int parentWidth, int parentHeight) { super.initialize(width, height, parentWidth, parentHeight); mCamera = new Camera(); } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { final float FromDegree = mFromDegree; float degrees = FromDegree + (mToDegree - mFromDegree) * interpolatedTime; final float centerX = mCenterX; final float centerY = mCenterY; final Matrix matrix = t.getMatrix(); if (degrees <= -76.0f) { degrees = -90.0f; mCamera.save(); mCamera.rotateY(degrees); mCamera.getMatrix(matrix); mCamera.restore(); } else if (degrees >= 76.0f) { degrees = 90.0f; mCamera.save(); mCamera.rotateY(degrees); mCamera.getMatrix(matrix); mCamera.restore(); } else { mCamera.save(); // mCamera.translate(0, 0, centerX); mCamera.rotateY(degrees); mCamera.translate(0, 0, -centerX); mCamera.getMatrix(matrix); mCamera.restore(); } matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); } }
4.main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/image2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/two" /> <ImageView android:id="@+id/image1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/one" /> </RelativeLayout>
发表评论
-
自定义ProgressDialog
2013-04-21 15:58 1111就2段关键代码: <?xml version=&qu ... -
弹性 ScrollView
2013-04-21 15:14 1364CustomerScrollView.java: clas ... -
走马灯效果文字
2012-02-15 16:05 1853走马灯效果的代码,对Tex ... -
API DEMO中3D旋转Layout效果
2011-12-08 13:07 2979LayoutChange.java: package cn ... -
自定义Loading Dialog
2011-09-12 21:00 2684好久没有更新blog,这段时间忙着换工作的事情,现在赶紧的拾掇 ... -
关于旋转动画效果
2011-05-01 17:13 2222好久没有写过blog了,5.1还在继续劳动,:( 刚研究完一个 ... -
Dialog伸缩动画效果
2011-01-13 14:45 6568效果图: ViewScale.java: publ ... -
球体旋转Anim(主要学习点Matrix知识)
2010-12-09 20:20 2087这点Code主要对View重写进行球体旋转: 知识点: 1.重 ... -
Anim中实现Scale和Alpha操作ImageView
2010-12-09 19:51 2827针对这个动画效果的应用,可以了解如下几个知识点: 1.几种动画 ... -
Image的放大,缩小(zoom in,zoom out)
2010-09-15 10:51 3350package com.example; impor ... -
TextView中各种Interpolator的使用
2010-09-09 13:07 3537package net.blogjava.mobile.i ... -
点击button拖动效果
2010-09-09 10:05 1579这个简单的代码段可以熟悉getX(),getRawX()等方法 ... -
API中画arc的简单代码
2010-09-07 14:45 1474package com.test; import a ... -
文本抖动效果
2010-09-05 21:58 2812几句代码如下: Animation animation = ... -
球体运动效果
2010-08-14 22:42 1756看个效果图: 自定义的View: package ... -
关于Drawable动画效果的实现demo(参考ray的博客例子)
2010-08-12 23:09 3080直接上代码把,上面都写了很清楚的注释: package c ... -
一种动画2中不同实现方式(代码和xml)
2010-08-05 21:01 1442AnimTwo.java文件: package cn.co ... -
Activity之间切换的各种效果(遗憾没有3D的效果)
2010-08-05 19:25 7171下面的Demo是我找到的一个觉得用来在程序中进行Activit ... -
Layout之间3D切换效果Demo
2010-07-26 21:58 4060先上个效果图(跟自己Blog中的浏览图片的代码类似,不过是la ... -
ImageView点击透明度变化效果
2010-07-26 20:53 46031. ClickAlphaChange.java文件 pa ...
相关推荐
浏览图片 3D效果 demo android
Flex 结合PaperVison3D 写的图片浏览demo,下载既能运行
基于安卓环境下的一个3D图片展示Demo
这是一个仿iphone斜拉的横向3D图片切换效果demo,实现了iphone图片浏览的效果
程序员3D效果的相册,用鼠标多拽从多个角度浏览相册图片,简单相册制作带给她人不一样的美感,入门级教程,欢迎交流
安卓源码包android画廊效果Gallery相册浏览MyCoversFlow完整代码等DEMO源码等10个合集: android_PageFlipper CoversFlow drawable(图片) Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果 Gallery3D ...
像iphone相册那样的炫,立体,滑动切换图片。直接导入就可运行
flash3D照片墙组件,轻松制作照片浏览墙
所以需要做一个简单的图片浏览选择程序。最后选用Gallery作为基本控件。加入了一些炫一点的元素,做成3D滑动效果。下面是Demo例子截图: 这个效果网上已经很多人做出来了,只是这次需要用到,所以自己也实践了一下...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
全景,英文名(Panorama),又被称为3D实景,是一种新兴的富媒体技术,其与视频,声音,图片等传统的流媒体最大的区别是“可操作,可交互”。 全景分为虚拟现实和3D实景两种。虚拟现实是利用maya等软件,制作出来的...
26.jQuery实现图片3D旋转特效插件 v1.1版本下载 27.jQuery实现图片3D立体感的前后轮番展示特效 28.jQuery实现图片取景器仿相机拍照功能的插件photoShoot 29.jQuery实现图片变色特效插件与实例下载如jquery...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
Android图片浏览之源码 图片浏览器android源码下载 Android瀑布流加载图片效果实例 Android中利用ViewPager实现视图切换 Android泡泡聊天界面的源码实现 android 实现EditText震动效果 Touch Index Bar (有锤子有...
Android RecycleView+任意头尾布局+拖拽换位+拖拽删除demo Android sql练习合集 Android 仿12306 Android 优秀计步器 Android 体重计算源码 Android 使用Gallery_tabhost实现标签效果图源码 Android 例子源码根据CPU...