【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线程中 ...
随机推荐
- 乐在其中设计模式(C#) - 提供者模式(Provider Pattern)
原文:乐在其中设计模式(C#) - 提供者模式(Provider Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 提供者模式(Provider Pattern) 作者:weba ...
- ListView滑动删除 ,仿腾讯QQ
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/22961279 在CSDN上开了很多大神们的文章,感觉受益良多,也非常欣赏大家的分 ...
- Lua基础(转)
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...
- 3、采用Gradle创Libgdx工程
(原文链接:http://www.libgdx.cn/topic/20/3-%E4%BD%BF%E7%94%A8gradle%E5%88%9B%E5%BB%BAlibgdx%E9%A1%B9%E7%9 ...
- C++指针和引用简介
摘要 本文介绍C++指针和概念引用 这是一个指针 指针的类型 指针所指向的类型 指针表达式 指针与函数 什么是引用 指针引用差别 指针和引用的同样点和不同点 **什么是指针** 指针就是一个存放地址的 ...
- android--jenkins+gradle+android自动化构建apk步骤(转)
第一步,安装jenkins,这个网上教程挺多的. 第二步,下载并配置gradle.下载地址http://www.gradle.org/ 解压gradle至某路径下,如/usr/local/lib/gr ...
- 大约linux的几个问题,你能回答几个?--回复14-20称号
14.select和poll差异?Poll和epoll的差别? (1)select和poll的差别:(參考:http://blog.csdn.net/mituan2008/article/detail ...
- Android setDisplayOptions 具体的使用说明
Android有几个地方使用位计算.实例Intent Flags,它们的定义View onMeasure(int widthMeasureSpec, int heightMeasureSpec),并且 ...
- jquery声明
$("[id^=total_item]")代表 id随着total_item开始XX..必须jquery支持 版权声明:本文博主原创文章,博客,未经同意,不得转载.
- jQuery -> 获取各种滤芯(filter)
按顺序选择 依次选择过滤器(filter)有着 :first 第一元件 :last 最后一个元素 :even 序号为偶数的元素 :odd 序号为奇数的元素 :eq(n) 序号等于n的元素 :lt(n) ...