- 浏览: 579804 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
hxlniada:
[color=darkred][/color][size=sm ...
利用Handler来更新android的UI -
jack_ye:
...
检测Android中触摸屏手势的动作与坐标 -
z278013421:
Android Services使用示例 -
东方vs不败:
写的不错,挺好的
利用Handler来更新android的UI -
liangxping:
就是双缓存机制而已。
Android中SurfaceView的使用示例
简单的demo,屏幕上下滑动翻转View,类似Android Chrome的效果
代码很简单,扩展一X轴旋转的动画RotateAnimationEX:
package com.ray.animation; import android.graphics.Camera; import android.graphics.Matrix; import android.util.Log; import android.view.animation.Animation; import android.view.animation.Transformation; public class RotateAnimationEX extends Animation { private float mFromDegress, mToDegress; private float mCenterX, mCenterY; private Camera mCamera; private OnFlipListener mFlipListener; private boolean onFilpped; public RotateAnimationEX(float fromDegrees, float toDegrees, int centerX, int centerY) { mFromDegress = fromDegrees; mToDegress = toDegrees; mCenterX = centerX; mCenterY = centerY; mCamera = new Camera(); onFilpped = false; } public void setFlipListener(OnFlipListener listener) { mFlipListener = listener; } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { mCamera.save(); float rotateAngle = mFromDegress + (mToDegress - mFromDegress)*interpolatedTime; Log.d("Trace", "angel" + rotateAngle); if (mFlipListener != null) { if (rotateAngle >= 90 && rotateAngle <=180 || rotateAngle <=-90 && rotateAngle >= -180) { if (!onFilpped) { mFlipListener.onFlip(); onFilpped = true; } } } mCamera.rotateX(rotateAngle); Matrix m = t.getMatrix(); mCamera.getMatrix(m); m.preTranslate(-mCenterX, -mCenterY); m.postTranslate(mCenterX, mCenterY); mCamera.restore(); } public interface OnFlipListener { void onFlip(); } }
一测试的ViewGroup:
package com.ray.animation; import com.ray.animation.RotateAnimationEX.OnFlipListener; import android.content.Context; import android.graphics.Camera; import android.graphics.Color; import android.graphics.Matrix; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Transformation; public class TestViewGroup extends ViewGroup implements GestureDetector.OnGestureListener, OnFlipListener { public static final int MARGIN = 30; public static final int MAX_ROTATE_ANGLE = 90; private View mTestView; private RotateAnimationEX mRotaAnim; private GestureDetector mGestureDetector; private float rotateAngle = 0; private Camera mCamera; public TestViewGroup(Context context) { super(context); mTestView = new View(context); mTestView.setBackgroundColor(COLORS[0]); addView(mTestView); setStaticTransformationsEnabled(true); mGestureDetector = new GestureDetector(context,this); mCamera = new Camera(); } @Override protected boolean getChildStaticTransformation(View child, Transformation t) { if (child == mTestView) { mCamera.save(); Matrix m = t.getMatrix(); mCamera.rotateX(rotateAngle); mCamera.getMatrix(m); m.preTranslate(-child.getWidth() / 2, -child.getHeight() / 2); m.postTranslate(child.getWidth() / 2, child.getHeight() / 2); mCamera.restore(); return true; } return false; } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { mTestView.layout(l + MARGIN, t + MARGIN, r - MARGIN, b - MARGIN); } @Override public boolean onTouchEvent(MotionEvent event) { boolean retValue = mGestureDetector.onTouchEvent(event); if (event.getAction() == MotionEvent.ACTION_UP) { mRotaAnim = new RotateAnimationEX(rotateAngle, 180*rotateAngle/Math.abs(rotateAngle), mTestView.getWidth()/2, mTestView.getHeight()/2); mRotaAnim.setFlipListener(this); mRotaAnim.setDuration(700); mRotaAnim.setFillAfter(true); mTestView.startAnimation(mRotaAnim); rotateAngle = 0; } return retValue; } @Override public boolean onDown(MotionEvent e) { if (mTestView != null) mTestView.clearAnimation(); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { rotateAngle = (e1.getY() - e2.getY()) / getHeight() * MAX_ROTATE_ANGLE; invalidate(); return true; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public void onFlip() { mTestView.setBackgroundColor(COLORS[(++mCurrentColor) % COLORS.length]); } private static int mCurrentColor = 0; private static final int[] COLORS = new int[] {Color.BLUE, Color.RED}; }
使用代码:
package com.ray.demo; import com.ray.animation.TestViewGroup; import android.app.Activity; import android.os.Bundle; public class ChromeEggActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new TestViewGroup(this)); } }
- ChromeEgg.zip (62.8 KB)
- 下载次数: 41
发表评论
-
3D编程基础数学之旋转及在Android中的应用
2012-02-10 00:11 0最近因为兴趣,看了一些3D编程的书,有种感觉就是写这些书的作者 ... -
Android中屏幕Density对BitmapDrawable的影响
2011-07-08 21:44 7905很早之前写的文章了,发在这里记录一下。 在之前的 ... -
Android程序与Javascript的交换
2010-04-16 21:40 0hello! -
Android Services使用示例
2010-01-12 16:50 14143Android开发中,当需要创建在后台运行的程序的时候,就要 ... -
Android游戏开发之服务器端
2010-01-09 16:38 6721首先我不知道这篇文章发到Android开发板块是否适合的,因为 ... -
Android ListView常用用法
2009-12-03 20:56 36749ListView是比较常用的控件,但一直都觉得创建ListVi ... -
Android View添加 Listener 小技巧示例
2009-12-02 15:35 9873在开发中为控件添加Listener是非常常见的工作,最简单的添 ... -
Android Gesture 手势识别使用实例
2009-10-20 11:56 10217很高兴能在Android1.6的sdk看到手势识别这一 ... -
Android第二个游戏 DragonFeed(勇者喂恶龙)
2009-10-12 17:57 8119这是参加学校一个小比赛的参赛游戏,之前一直在忙 认证考试和项目 ... -
Android 震动示例--心跳效果
2009-10-02 23:58 7719正在开发第二个游戏,计时就要结束的时候,为了营造紧张的气氛, ... -
Android adb的使用略解
2009-09-30 16:08 40289安卓网的一个帖子,写得不错,记下来 ADB全称Android ... -
Android游戏开发之连连看算法
2009-09-29 00:36 10481因为有朋友在站内信中问到连连看的具体算法,所以我就把算法pos ... -
android游戏开发之选关画面
2009-09-21 15:44 4056在游戏开发中,往往要提供选关的页面,选择关卡可以简单地使用li ... -
Android重力感应Demo
2009-09-11 23:33 14083android中的很多游戏的游戏都使用了重力感应的技术,但其a ... -
Android游戏开发之爆炸效果
2009-09-02 00:29 18552在做Android游戏MagicBubble开发的时候 ... -
Android 的第一个游戏
2009-08-18 08:48 8022学了android1个多月,做了一款连连看游戏,上了andro ... -
Android canvas的save()和restore()用法
2009-08-05 12:21 19930在读Android SDK里面的samples里面游戏的时候, ... -
Android 2d物理引擎Box2d的使用示例
2009-08-04 09:06 14299Box2d是一个很出名的2d物理引擎,大家可以google之。 ... -
利用Handler更新Android UI的另一种方法
2009-07-29 11:28 11922文字程序很简单,一个View,一个Activity,利用han ... -
android布局学习利器-Hierarchy Viewer
2009-07-27 18:17 8150Hierarchy Viewer 帮你分析应用程序UI布局 ...
相关推荐
类似新浪微博js图片旋转/翻转效果 兼容ie6,ie7,ie8,firefox,opera,chrome...; html5,canvas应用; 新浪微博里的图片旋转效果!弥补了新浪里在ie8下旋转图片时不会撑开容器,导致有时候图片看不到全部的问题。由于...
为了实现翻转效果,使用`transform`属性中的`rotateY`或者`rotateX`函数,这允许我们绕着Y轴或X轴旋转元素。例如,可以设置`.page`类在不同时间点的`rotateY`值,当它们在时间线上顺序被激活时,就会产生色子翻转的...
翻转效果当前可在WebKit浏览器(例如Chrome,Safari,包括iOS移动Safari)或Firefox 11上使用。它仍可与其他浏览器一起使用,但将优先选择“幻灯片”效果。 兼容性 当前版本与jQuery 1.6.4、1.7.X,1.8.X和jQuery ...
对于兼容性问题,描述中提到了支持的浏览器列表,包括IE8及更新版本,以及360、Firefox、Chrome、Safari、Opera、傲游、搜狗和世界之窗。这意味着这个JavaScript特效已经考虑了不同浏览器的差异,可能使用了一些跨...
通过JavaScript,特别是针对“JS特效-翻牌页角”的标签,我们可以推测这个特效是通过模拟真实的纸质书页翻转效果来增强用户体验,让读者在数字环境中也能感受到类似阅读实体书籍的感官刺激。 实现这种翻页特效的...
翻页幻灯片效果是一种常见的网页展示效果,通过翻动模拟真实世界的纸张翻转效果,给用户以视觉上的冲击和吸引。在本知识点中,我们将详细探讨如何使用CSS3和JavaScript技术来实现这样的效果,并通过具体的代码实现来...
`,使图片的内容翻转180度,形成上下颠倒的效果。 4. **图片自转**: 要让图片自身旋转,同样可以利用`-webkit-animation`,但这次是设置为图片元素。如`-webkit-animation: spin 1s linear infinite;`会让图片每...
6. **CSS3盒模型和兼容性处理**:`display: inline-block`和`zoom: 1`以及`*display: inline`组合使用,是为了在IE7及以下版本中实现类似`display: inline-block`的效果,确保元素能水平排列并保持块级元素特性。...
Oridomi是一个独立的JavaScript插件,专门用于生成类似纸张的折叠效果。它不依赖任何其他JavaScript框架,但对于jQuery提供了可选的支持。Oridomi利用CSS3的3D变换功能,使得元素可以沿着预定的路径折叠和展开,为...
3. **CSS3变换**:为了实现图片的旋转和翻转效果,JavaScript可能会结合CSS3的`transform`属性。`transform`允许开发者对元素进行二维或三维变换,如`rotate()`(旋转)、`scale()`(缩放)和`flip`(翻转)。 4. *...
另一方面,flipsnap是一个专为移动设备设计的页面切换库,它利用iscroll的滚动功能,实现了类似翻书或卡片翻转的效果。flipsnap的主要优点在于它能够轻松地创建一个可滑动的网格布局,当用户在屏幕上滑动时,内容会...
- 引导页实现了多种切换页面的方式,尽管未完全实现原3D翻转效果和动画同步,但仍提供了良好的页面导航。 - 魅力图书馆页中,有轮播图、全选/取消全选功能、选项卡自动切换等,增加了用户的互动性。 - 在服务页,...
这个插件的独特之处在于它能将用户访问的任何网页上的图像进行水平翻转,从而创造出一种有趣的效果,比如让网页上的所有人物像是在照镜子一样。这种功能在与朋友或同事分享时尤其能引发笑声,因为当他们浏览安装了该...
不过,现代主流浏览器(如Chrome、Firefox、Safari、Edge等)都已经很好地支持了CSS3的3D透视效果。在实际应用中,应使用前缀(如 `-webkit-`)来确保在某些浏览器中的兼容性,并通过检测浏览器特性来提供适当的回退...
7. **跨平台兼容**:虽然这里讨论的是Chrome浏览器的插件,但特征切换的概念可以应用于任何支持类似机制的软件,包括桌面应用、移动应用乃至服务器端应用。 8. **API设计**:为了实现特征翻转,需要设计一个清晰且...
在这个案例中,JavaScript可能被用来控制广告翻牌的效果,如左右切换、定时自动播放、用户点击触发翻转等互动功能。 3. 网页广告设计:设计出引人注目的广告对于提升品牌知名度和网站流量至关重要。左右翻牌的广告...
1. **动态效果**:Web 2.0设计注重用户体验,CSS翻页通过流畅的动画效果,如平滑过渡、淡入淡出、3D翻转等,使用户在浏览页面时感到更加舒适自然。 2. **响应式设计**:这些CSS翻页方案通常都考虑到了不同设备的...
viewer.js 是一个功能强大的JavaScript图片查看器插件,它以其简洁的API、丰富的自定义选项以及优雅的动画效果深受开发者喜爱。此插件允许用户在网页上轻松实现类似画廊的图片浏览体验,且支持多种交互功能,如放大...