- 浏览: 1225341 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (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)
LayoutChange.java:
Rotate3dAnimation.java:
DisplayNextView.java:
3个类文件,自己添加2个含有按钮的Layout既可以实现.
package cn.com; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateInterpolator; import android.widget.Button; public class LayoutChange extends Activity { ViewGroup layout1, layout2; public int order; DisplayNextView displayNext; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout1); displayNext = new DisplayNextView(this); layout1 = (ViewGroup) findViewById(R.id.layout1); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { order = 1; applyClockInverseRotation(layout1, 0, -90, layout1.getWidth() / 2.0f, layout1.getHeight() / 2.0f, true); } }); } /** 顺时针方向旋转90° */ public void applyClockwiseRotation(ViewGroup mView, float start, float end, float centerX, float centerY, boolean isAddListener) { final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end, centerX, centerY, 200.0f, isAddListener); rotation.setDuration(500); rotation.setFillAfter(true); rotation.setInterpolator(new AccelerateInterpolator()); if (isAddListener) { rotation.setAnimationListener(displayNext); } mView.startAnimation(rotation); } /** * @Description:逆时针方向旋转90°. * * @param mView * 需要应用动画的View. * @param start * 动画初始角度值. * @param end * 动画结束角度值. * @param centerX * 旋转动画中心点x坐标. * @param centerY * 旋转动画中心点y坐标. * @param mIsAddListener * * @return void 返回类型 */ public void applyClockInverseRotation(ViewGroup mView, float start, float end, float centerX, float centerY, boolean mIsAddListener) { final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end, centerX, centerY, 200.0f, mIsAddListener); rotation.setDuration(500); rotation.setFillAfter(true); rotation.setInterpolator(new AccelerateInterpolator()); if (mIsAddListener) { rotation.setAnimationListener(displayNext); } mView.startAnimation(rotation); } public void jumpToLayout1() { setContentView(R.layout.layout1); layout1 = (ViewGroup) findViewById(R.id.layout1); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { order = 1; applyClockInverseRotation(layout1, 0, -90, layout1.getWidth() / 2.0f, layout1.getHeight() / 2.0f, true); } }); } public void jumpToLayout2() { setContentView(R.layout.layout2); layout2 = (ViewGroup) findViewById(R.id.layout2); Button b2 = (Button) findViewById(R.id.button2); b2.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { order = 2; applyClockwiseRotation(layout2, 0, 90, layout2.getWidth() / 2.0f, layout2.getHeight() / 2.0f, true); } }); } }
Rotate3dAnimation.java:
package cn.com; import android.view.animation.Animation; import android.view.animation.Transformation; import android.graphics.Camera; import android.graphics.Matrix; /** * An animation that rotates the view on the Y axis between two specified angles. This animation also adds a translation on the Z * axis (depth) to improve the effect. */ public class Rotate3dAnimation extends Animation { private final float mFromDegrees; private final float mToDegrees; private final float mCenterX; private final float mCenterY; private final float mDepthZ; private final boolean mReverse; private Camera mCamera; /** * Creates a new 3D rotation on the Y axis. The rotation is defined by its start angle and its end angle. Both angles are * in degrees. The rotation is performed around a center point on the 2D space, definied by a pair of X and Y coordinates, * called centerX and centerY. When the animation starts, a translation on the Z axis (depth) is performed. The length of * the translation can be specified, as well as whether the translation should be reversed in time. * * @param fromDegrees * the start angle of the 3D rotation * @param toDegrees * the end angle of the 3D rotation * @param centerX * the X center of the 3D rotation * @param centerY * the Y center of the 3D rotation * @param reverse * true if the translation should be reversed, false otherwise */ public Rotate3dAnimation(float fromDegrees, float toDegrees, float centerX, float centerY, float depthZ, boolean reverse) { mFromDegrees = fromDegrees; mToDegrees = toDegrees; mCenterX = centerX; mCenterY = centerY; mDepthZ = depthZ; mReverse = reverse; } @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 fromDegrees = mFromDegrees; float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime); final float centerX = mCenterX; final float centerY = mCenterY; final Camera camera = mCamera; final Matrix matrix = t.getMatrix(); camera.save(); if (mReverse) { camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime); } else { camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime)); } camera.rotateY(degrees); camera.getMatrix(matrix); camera.restore(); matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); } }
DisplayNextView.java:
package cn.com; import android.view.View; import android.view.animation.Animation; public class DisplayNextView implements Animation.AnimationListener { LayoutChange lc; public DisplayNextView(LayoutChange lc) { this.lc = lc; } public void onAnimationStart(Animation animation) { } public void onAnimationEnd(Animation animation) { if (lc.order == 1) { lc.layout1.post(new SwapViews()); } if (lc.order == 2) { lc.layout2.post(new SwapViews()); } } public void onAnimationRepeat(Animation animation) { } private final class SwapViews implements Runnable { public void run() { if (lc.order == 1) { lc.layout1.setVisibility(View.GONE); lc.jumpToLayout2(); lc.layout2.setVisibility(View.VISIBLE); lc.applyClockInverseRotation(lc.layout2, 90, 0, 160, 192, false); } else if (lc.order == 2) { lc.jumpToLayout1(); lc.applyClockwiseRotation(lc.layout1, -90, 0, 160, 192, false); } } } }
3个类文件,自己添加2个含有按钮的Layout既可以实现.
发表评论
-
自定义ProgressDialog
2013-04-21 15:58 1179就2段关键代码: <?xml version=&qu ... -
弹性 ScrollView
2013-04-21 15:14 1432CustomerScrollView.java: clas ... -
走马灯效果文字
2012-02-15 16:05 1913走马灯效果的代码,对Tex ... -
自定义Loading Dialog
2011-09-12 21:00 2732好久没有更新blog,这段时间忙着换工作的事情,现在赶紧的拾掇 ... -
关于旋转动画效果
2011-05-01 17:13 2266好久没有写过blog了,5.1还在继续劳动,:( 刚研究完一个 ... -
Dialog伸缩动画效果
2011-01-13 14:45 6616效果图: ViewScale.java: publ ... -
球体旋转Anim(主要学习点Matrix知识)
2010-12-09 20:20 2122这点Code主要对View重写进行球体旋转: 知识点: 1.重 ... -
Anim中实现Scale和Alpha操作ImageView
2010-12-09 19:51 2880针对这个动画效果的应用,可以了解如下几个知识点: 1.几种动画 ... -
Image的放大,缩小(zoom in,zoom out)
2010-09-15 10:51 3388package com.example; impor ... -
TextView中各种Interpolator的使用
2010-09-09 13:07 3563package net.blogjava.mobile.i ... -
点击button拖动效果
2010-09-09 10:05 1623这个简单的代码段可以熟悉getX(),getRawX()等方法 ... -
API中画arc的简单代码
2010-09-07 14:45 1548package com.test; import a ... -
文本抖动效果
2010-09-05 21:58 2889几句代码如下: Animation animation = ... -
球体运动效果
2010-08-14 22:42 1782看个效果图: 自定义的View: package ... -
关于Drawable动画效果的实现demo(参考ray的博客例子)
2010-08-12 23:09 3129直接上代码把,上面都写了很清楚的注释: package c ... -
一种动画2中不同实现方式(代码和xml)
2010-08-05 21:01 1471AnimTwo.java文件: package cn.co ... -
Activity之间切换的各种效果(遗憾没有3D的效果)
2010-08-05 19:25 7206下面的Demo是我找到的一个觉得用来在程序中进行Activit ... -
Layout之间3D切换效果Demo
2010-07-26 21:58 4134先上个效果图(跟自己Blog中的浏览图片的代码类似,不过是la ... -
ImageView点击透明度变化效果
2010-07-26 20:53 46401. ClickAlphaChange.java文件 pa ... -
图片3D浏览的Demo
2010-07-26 14:21 2205这是个图片浏览的例子; 刚在群里一个家伙给提供的思路: 1. ...
相关推荐
**JTopo官方Demo API源码详解** JTopo是一款强大的JavaScript网络拓扑图库,专为绘制和操作网络拓扑图而设计。它提供了丰富的API接口,使得开发者能够轻松创建各种复杂的网络拓扑结构,如数据中心、网络设备布局、...
在"JTopo官网API demo离线资源包"中,我们可以找到一系列示例和文档,帮助我们深入理解和使用JTopo。 **1. JTopo的基本概念** - **拓扑图**:由节点(Node)和连接线(Link)构成的图形表示,常用于表示复杂的系统...
这些API可以创建平滑的动画效果,使图片在用户触碰时旋转。 5. **响应式编程(Responder Chain)**:在iOS中,用户交互通常通过响应者对象(如UIViewController、UIView)来处理。源码可能展示了如何利用响应者链来...
在这个Demo中,很可能是使用了UIKit提供的UIView动画API,如`UIView.animate(withDuration:animations:)`或`UIViewPropertyAnimator`。这些方法可以方便地创建平滑的过渡效果,使菜单在点击后以旋转的方式展开或收起...
以上就是"IOS抽屉效果的Demo"中可能涉及的知识点,涵盖了手势识别、布局、动画、ViewController管理等多个方面,为开发者实现类似功能提供了理论基础和实践指导。通过学习和理解这些概念,你可以创建出具有专业水准...
7. 动画:在iOS中,可以使用UIView的动画API(如`animateWithDuration:animations:`)来平滑地过渡图片的拖动和旋转效果,提高用户体验。 8. MVC(模型-视图-控制器)架构:iOS开发遵循MVC设计模式,代码可能将业务...
9. **Demo与API文档**:YUI 2.8.1版本中包含了示例代码和详细的API文档,这是学习和理解YUI功能的关键。通过阅读和实践这些示例,开发者可以快速掌握如何在实际项目中应用YUI。 10. **社区支持**:作为一款成熟的...
通过学习和理解这个demo,开发者不仅可以掌握如何在iOS中创建3D动画,还能了解到如何整合多种技术来提升应用的视觉效果和用户体验。这个源码示例是一个宝贵的教育资源,对于提升iOS动画和交互设计技能大有裨益。
在描述中提到的 "demo带索引及中文API",意味着这个压缩包不仅提供了演示示例,还增加了方便开发者查阅的索引和中文API文档,这对于中国开发者来说尤其友好,可以更便捷地理解和使用各种组件。 EasyUI 的核心在于其...
源码中可能使用了这些API来实现图片的淡入淡出、旋转、缩放等动画效果。 5. **异步加载图片**:在处理大量图片时,为避免阻塞UI,通常会使用异步加载策略。这可能涉及到网络请求(如NSURLSession或Alamofire)和...
本篇将详细讲解`Gallery`实现的小demo中的倒影效果和滑动翻转功能。 首先,`Gallery`是一个基于`AbsSpinner`的视图,它提供了水平方向上的滚动行为。开发者可以通过设置`Adapter`来填充`Gallery`的内容,每个`...
本示例“大风车系列demo”就是一个很好的实践,它演示了如何模拟风车的旋转效果。在这个项目中,我们将深入探讨自定义View的核心知识点,包括View的基本结构、绘图API以及动画实现。 首先,我们需要了解自定义View...
随着对OpenGL ES API的深入学习,我们可以创建更复杂的3D场景、实现物理模拟、光照效果以及动画等高级特性。在实际项目中,开发者可以根据需求选择合适的库,如libGDX、JMonkeyEngine等,它们基于GLSurfaceView提供...
QT5.9官方组件demo flatstyle是一个用于展示QT5.9框架中FlatStyle设计风格的示例项目。这个Demo旨在帮助开发者了解如何在QT5.9中应用和自定义FlatStyle,这是一种现代化、扁平化的界面设计风格,使得应用程序看起来...
**GEF教程及DEMO源码详解** ...总结,GEF教程及DEMO源码的学习,不仅能帮助开发者理解图形编辑框架的设计思想,还能掌握实际开发中的关键技术点。通过实践,可以快速上手并开发出满足特定需求的图形编辑工具。
这个"Android应用源码 ListView下拉刷新 Demo"提供了一个实际的例子,帮助开发者了解如何在ListView中实现这一功能。 1. **SwipeRefreshLayout**:Android SDK 提供了一个名为SwipeRefreshLayout的布局容器,它是...
通过这个Demo,开发者可以学习到如何利用Android的Sensor API,结合SensorEventListener接口,实现对设备运动和方向变化的实时监控。这个知识对于开发游戏、健康监测、导航等相关应用至关重要。
Android ApiDemo是Android开发中的一个重要学习资源,它包含了大量的示例代码,涵盖了Android SDK的各种API功能,对于开发者来说,这是一个不可多得的学习和参考工具。本篇文章将深入探讨ApiDemo中的核心知识点,并...
DOJO 包含 `dojo/fx` 和 `dijit/fx` 模块,提供了丰富的动画效果,如淡入淡出、滑动、旋转等,让开发者可以轻松创建动态用户体验。 7. **DOJO 国际化与本地化** DOJO 提供了 `dojo/i18n` 和 `dojo/nls` 模块,...
这个"Android ProgressBar进度条Demo源码.rar"压缩包提供的就是一个关于如何在Android应用中使用ProgressBar的示例代码。下面我们将深入探讨ProgressBar的基本概念、类型以及如何在实际开发中应用。 1. **...