【Android界面实现】可旋转的汽车3D模型效果的实现
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992
今天要给大家介绍的是怎样实现可旋转的汽车3D模型。
先看实现效果
这仅仅是静态图,实际上,这个模型是能够依据手势进行旋转的,效果还能够。
以下我说一下实现的原理。首先,这样的3D模型的旋转效果是通过切换不同的图片完毕的,在这个样例中,一共同拥有52张图片,展示了360度的旋转效果,差点儿相同每6度一张照片。然后,我们仅仅须要监听盛放图片的ImageView的onTouch事件,完毕图片的切换就能够实现这样的效果。
以下是几张图片的样例
以下,看一下代码实现
package com.example.car3d; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView; /**
*
* @ClassName: com.example.car3d.MainActivity
* @Description: 3D汽车模型
* @author zhaokaiqiang
* @date 2014-10-31 上午8:51:59
*
*/
public class MainActivity extends Activity { protected static final String TAG = "MainActivity";
// 当前显示的bitmap对象
private static Bitmap bitmap;
// 图片容器
private ImageView imageView;
// 開始按下位置
private int startX;
// 当前位置
private int currentX;
// 当前图片的编号
private int scrNum;
// 图片的总数
private static int maxNum = 52;
// 资源图片集合
private int[] srcs = new int[] { R.drawable.p1, R.drawable.p2,
R.drawable.p3, R.drawable.p4, R.drawable.p5, R.drawable.p6,
R.drawable.p7, R.drawable.p8, R.drawable.p9, R.drawable.p10,
R.drawable.p11, R.drawable.p12, R.drawable.p13, R.drawable.p14,
R.drawable.p15, R.drawable.p16, R.drawable.p17, R.drawable.p18,
R.drawable.p19, R.drawable.p20, R.drawable.p21, R.drawable.p22,
R.drawable.p23, R.drawable.p24, R.drawable.p25, R.drawable.p26,
R.drawable.p27, R.drawable.p28, R.drawable.p29, R.drawable.p30,
R.drawable.p31, R.drawable.p32, R.drawable.p33, R.drawable.p34,
R.drawable.p35, R.drawable.p36, R.drawable.p37, R.drawable.p38,
R.drawable.p39, R.drawable.p40, R.drawable.p41, R.drawable.p42,
R.drawable.p43, R.drawable.p44, R.drawable.p45, R.drawable.p46,
R.drawable.p47, R.drawable.p48, R.drawable.p49, R.drawable.p50,
R.drawable.p51, R.drawable.p52 }; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageView);
// 初始化当前显示图片编号
scrNum = 1; imageView.setOnTouchListener(new OnTouchListener() { @Override
public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getX();
break; case MotionEvent.ACTION_MOVE:
currentX = (int) event.getX();
// 推断手势滑动方向,并切换图片
if (currentX - startX > 10) {
modifySrcR();
} else if (currentX - startX < -10) {
modifySrcL();
}
// 重置起始位置
startX = (int) event.getX(); break; } return true;
} }); } // 向右滑动改动资源
private void modifySrcR() { if (scrNum > maxNum) {
scrNum = 1;
} if (scrNum > 0) {
bitmap = BitmapFactory.decodeResource(getResources(),
srcs[scrNum - 1]);
imageView.setImageBitmap(bitmap);
scrNum++;
} } // 向左滑动改动资源
private void modifySrcL() {
if (scrNum <= 0) {
scrNum = maxNum;
} if (scrNum <= maxNum) {
bitmap = BitmapFactory.decodeResource(getResources(),
srcs[scrNum - 1]);
imageView.setImageBitmap(bitmap);
scrNum--;
}
} }
【Android界面实现】可旋转的汽车3D模型效果的实现的更多相关文章
- Android界面(1) 使用TextView实现跑马灯效果
方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"...& ...
- 【pano2vr】网页Flash中简单实现炫酷的3D模型制作
花了两天时间学习如何能够高效的实现3D模型效果,毕竟是从0开始学习,感觉pano2vr这款软件挺容易上手,并且可以很容易实现简单的热点交互,可以根据交互需求设置皮肤,故将这一款软件推荐给大家: 1.简 ...
- Flash Stage3D 在2D UI 界面上显示3D模型问题完美解决
一直以来很多Stage3D开发者都在为3D模型在2DUI上显示的问题头疼.Stage3D一直是在 Stage2D下面.为了做到3D模型在2DUI上显示通常大家有几种实现方式,下面来说说这几种实现方式吧 ...
- ANDROID嵌入式应用Unity3D视图(画廊3D模型)
转载请注明来自大型玉米的博客文章(http://blog.csdn.net/a396901990),谢谢支持! 效果展示: watermark/2/text/aHR0cDovL2Jsb2cuY3N ...
- Unity在UI界面上显示3D模型/物体,控制模型旋转
Unity3D物体在UI界面的显示 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- 教你如何利用threejs对3D模型皮肤进行DIY
一步一步教你如何利用threejs加载gltf模型来实现DIY换肤功能. 模型准备 模型制作 模型可以通过网上下载,也可以自己通过c4d.maya.blender等模型制作软件得到.这里就不叙述有关模 ...
- 关于PCB 3D 模型的快速导入方法
altium designer中创建的3D library 只能查看3D效果,并没有其他功能,经测试在原理图编辑界面通过给元件添加 PCB 3D 并不能真正添加3D模型,这样添加根本没有效果(显示不出 ...
- CSS3之简易的3D模型构建[原创开源]
CSS3之简易的3D模型构建[开源分享] 先上一张图(成果图):这个是使用 3D建模空间[源码之一] 制作出来的模型之一 当然这是一部分模型特写, 之前还制作过枪的3D模型等等. 感兴趣的朋友可以自己 ...
- Android界面刷新方法
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...
随机推荐
- js淡入淡出
示例: js淡入淡出 原理:更改css不透明数值 知识点: css不透明 filter:alpha(opacity:30); opacity:0.3;} 小技巧: 小于临界值,做加速 大于临界值,做减 ...
- asp.net访问网络路径方法(模拟用户登录)
public class IdentityScope : IDisposable { // obtains user token [DllImport("advapi32.dll" ...
- java编程规范之java命名规范
想要成为一个优秀的程序员,首先要培养良好的编程习惯,为了提高代码的可读性,必须有好的命名规范. 这篇文章是小编结合网上的很多资料整理出来的,若有不当或错误的地方,欢迎大家指正 在文章开始前,为方便阅读 ...
- hdu1004----用java链表实现
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- Linux下一个Nginx安装步骤
一个.下载pcre 官网下载:http://www.pcre.org/ # wget http://sourceforge.net/projects/pcre/files/pcre/8.35/pcre ...
- C/S通信模型和相关技术要点
差点儿全部的项目中,都会涉及到client和服务端.而client与server之间的通信又是一个非经常见但又有须要问题的技术问题. 首先,连接方式有长连接和短连接.先看看概念. 长连接短连接仅仅是一 ...
- 编写ruby扩展库
# Loads mkmf which is used to make makefiles for Ruby extensions require 'mkmf' # Give it a name ext ...
- linux 下安装mysql
看以下这篇文章就够了 http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 查看有没有安装过: ...
- JSON 数据使用
当用不同的数据的模板需要更换时.假设数据点的量.使用json非常方便. json物: var JSONObject= { "name":"Bill Gates" ...
- MongoDB CRUD 基础知识
建立一个良好的发展环境 环境win8 x64,下载并安装省略.经mongodb 的bin文件夹增加windows的path中,为以后使用方便. c盘新建存储目录:c:/data/db 执行服务:WIN ...