- 浏览: 1222736 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (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 1173就2段关键代码: <?xml version=&qu ... -
弹性 ScrollView
2013-04-21 15:14 1423CustomerScrollView.java: clas ... -
走马灯效果文字
2012-02-15 16:05 1908走马灯效果的代码,对Tex ... -
API DEMO中3D旋转Layout效果
2011-12-08 13:07 3028LayoutChange.java: package cn ... -
自定义Loading Dialog
2011-09-12 21:00 2726好久没有更新blog,这段时间忙着换工作的事情,现在赶紧的拾掇 ... -
关于旋转动画效果
2011-05-01 17:13 2264好久没有写过blog了,5.1还在继续劳动,:( 刚研究完一个 ... -
Dialog伸缩动画效果
2011-01-13 14:45 6613效果图: ViewScale.java: publ ... -
球体旋转Anim(主要学习点Matrix知识)
2010-12-09 20:20 2118这点Code主要对View重写进行球体旋转: 知识点: 1.重 ... -
Anim中实现Scale和Alpha操作ImageView
2010-12-09 19:51 2873针对这个动画效果的应用,可以了解如下几个知识点: 1.几种动画 ... -
Image的放大,缩小(zoom in,zoom out)
2010-09-15 10:51 3383package com.example; impor ... -
TextView中各种Interpolator的使用
2010-09-09 13:07 3558package net.blogjava.mobile.i ... -
点击button拖动效果
2010-09-09 10:05 1618这个简单的代码段可以熟悉getX(),getRawX()等方法 ... -
API中画arc的简单代码
2010-09-07 14:45 1537package com.test; import a ... -
文本抖动效果
2010-09-05 21:58 2883几句代码如下: Animation animation = ... -
球体运动效果
2010-08-14 22:42 1779看个效果图: 自定义的View: package ... -
关于Drawable动画效果的实现demo(参考ray的博客例子)
2010-08-12 23:09 3123直接上代码把,上面都写了很清楚的注释: package c ... -
一种动画2中不同实现方式(代码和xml)
2010-08-05 21:01 1465AnimTwo.java文件: package cn.co ... -
Activity之间切换的各种效果(遗憾没有3D的效果)
2010-08-05 19:25 7202下面的Demo是我找到的一个觉得用来在程序中进行Activit ... -
Layout之间3D切换效果Demo
2010-07-26 21:58 4126先上个效果图(跟自己Blog中的浏览图片的代码类似,不过是la ... -
ImageView点击透明度变化效果
2010-07-26 20:53 46371. ClickAlphaChange.java文件 pa ...
相关推荐
本项目“Android高级图片滚动控件,3D版的图片轮播器Demo”专注于提供一种独特且引人入胜的3D图片展示方式,让用户能够更加沉浸地浏览图片。 首先,我们要理解3D图片轮播器的核心概念。在传统的2D轮播器基础上,3D...
这个"3d立体相册源码demo"是一个入门级的教程,旨在帮助程序员们了解如何创建具有3D效果的相册,使用户可以通过鼠标拖动来从不同角度浏览图片,从而为浏览者带来独特的视觉体验。 首先,我们需要了解HTML5。HTML5是...
"小程序源码 高级图片滚动控件,3D版的图片轮播器Demo.rar" 这个标题明确指出我们讨论的是一个针对小程序开发的源码项目,具体是一个高级的图片滚动控件,具有3D效果的图片轮播器的示例代码。这意味着这个压缩包包含...
本示例提供的"Android高级图片滚动控件,3D版的图片轮播器Demo.zip"是一个源码项目,它为开发者提供了更丰富、更生动的图片展示体验,尤其是在3D视觉效果上。 1. **3D图片轮播效果** - 3D转换:这个控件利用...
- `zns_demo.html`:这是主HTML文件,包含整个3D图片环绕浏览的结构和JavaScript代码。 - `zns.jpg`:可能是一个示例3D图片,用于演示3D环绕浏览效果。 - `style` 文件夹:通常包含CSS样式文件,用于定义3D图片的...
本篇文章将聚焦于一个Android高级应用源码——3D版的图片轮播器Demo,深入探讨其设计原理、实现方式以及优化策略,旨在帮助开发者提升对Android图像处理和UI控件的理解。 首先,我们要理解这个3D图片轮播器的核心...
首先,让我们分析“标题”:“flash图片特效制作banner焦点图片3D立体展示效果”。这里的关键词是“Flash”,它是一种由Adobe公司开发的动画创作和多媒体软件平台,用于创建交互式的矢量图形、动画、游戏以及应用...
首先,这个“安卓Android源码——安卓Android高级图片滚动控件,3D版的图片轮播器Demo”是一个包含源代码的压缩包,开发者可以下载并研究其内部结构。该压缩包的名称表明它是一个关于3D图片轮播器的示例项目,可能...
"安卓Android源码——安卓Android高级图片滚动控件,3D版的图片轮播器Demo.rar" 这个标题明确指出我们正在讨论一个针对Android平台的源码项目,它是一个高级的图片滚动控件,具有3D效果的图片轮播功能。在Android...
这个压缩包文件包含了一个基于Android平台的高级图片滚动控件的源码Demo,它具有3D效果,可以为用户带来独特的图片浏览体验。这个项目对于Android应用开发者,尤其是那些正在做毕业设计的学生来说,是一个非常有价值...
在Android平台上,为用户提供3D效果的图片浏览体验是一种创新且引人入胜的设计。这种技术可以增强用户体验,使图片看起来更加生动立体。本篇将深入探讨如何在Android应用中实现这一功能,主要涵盖以下几个核心知识点...
这个Demo展示了如何在Android平台上构建一个具有高级特性的图片滚动控件,其中包括了3D视觉效果,使得用户在浏览图片时有更丰富的体验。在进行Android应用开发时,图片轮播器是一个常见的组件,常见于应用的启动界面...
"图片3D展示效果"是一种将传统2D图片转化为动态3D展示的技术,能够为用户提供更生动、更具视觉冲击力的浏览体验。在本案例中,我们关注的是一个基于jQuery实现的3D图片切换插件。 jQuery是一个广泛使用的JavaScript...
【标题】"仿iPhone图片3D切换效果"指的是在网页中实现的一种模拟iPhone手机中图片浏览的3D切换动画。这种效果通常是通过JavaScript库或CSS3技术来完成,旨在为用户提供更加直观、生动且富有立体感的图片浏览体验,...
"漂亮的图片展示 3D 展示"这个项目显然聚焦于使用3D效果来展示图片,提供了一种新颖且吸引人的图片浏览方式。下面将详细讨论相关知识点: 1. **3D图形**:3D图形技术基于数学模型,通过计算机生成具有深度和立体感...
在"HTML5 3D图片阴影翻转动画DEMO演示"中,我们可以预期看到以下关键技术的应用: 1. **CSS3 Transitions**: 这是CSS3的一个特性,允许元素在两个样式之间平滑过渡。在翻转动画中,transition通常用于设置旋转速度...
这篇教程将介绍如何使用Flash创建一个3D动画焦点图片切换效果,该效果具有左右按钮控制,可以方便地滚动浏览图片。我们将重点讨论Flash的3D功能、XML文件的使用以及如何实现图片的动态加载。 首先,让我们理解...
总的来说,"galley3D效果+滑动敏感控制demo"是一个实用的Android开发示例,它展示了如何通过自定义和优化来提升Galley控件的用户体验,尤其是对于那些需要流畅且具有视觉冲击力的图片浏览应用来说,这个demo提供了很...
描述中提到的“左右循环翻图片的Demo”是指该程序能够展示一个图片库,用户可以通过按键盘的左右方向键来浏览图片,实现图片在序列中的前后切换。这种功能通常需要编程逻辑来处理图片的加载和动画效果,确保平滑过渡...
在这个场景中,Swiper可能用于展示多位医生的简介和头像,用户可以通过3D切换效果浏览并选择合适的医生。具体的实现细节可能包括医生数据的获取、每个`swiper-item`内的布局设计等。 总之,小程序中的Swiper 3D切换...