转载请注明出处: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--;
}
} }

下载项目请到https://github.com/ZhaoKaiQiang/car3d

【Android界面实现】可旋转的汽车3D模型效果的实现的更多相关文章

  1. Android界面(1) 使用TextView实现跑马灯效果

    方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"...& ...

  2. 【pano2vr】网页Flash中简单实现炫酷的3D模型制作

    花了两天时间学习如何能够高效的实现3D模型效果,毕竟是从0开始学习,感觉pano2vr这款软件挺容易上手,并且可以很容易实现简单的热点交互,可以根据交互需求设置皮肤,故将这一款软件推荐给大家: 1.简 ...

  3. Flash Stage3D 在2D UI 界面上显示3D模型问题完美解决

    一直以来很多Stage3D开发者都在为3D模型在2DUI上显示的问题头疼.Stage3D一直是在 Stage2D下面.为了做到3D模型在2DUI上显示通常大家有几种实现方式,下面来说说这几种实现方式吧 ...

  4. ANDROID嵌入式应用Unity3D视图(画廊3D模型)

    转载请注明来自大型玉米的博客文章(http://blog.csdn.net/a396901990),谢谢支持! 效果展示:   watermark/2/text/aHR0cDovL2Jsb2cuY3N ...

  5. Unity在UI界面上显示3D模型/物体,控制模型旋转

    Unity3D物体在UI界面的显示 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  6. 教你如何利用threejs对3D模型皮肤进行DIY

    一步一步教你如何利用threejs加载gltf模型来实现DIY换肤功能. 模型准备 模型制作 模型可以通过网上下载,也可以自己通过c4d.maya.blender等模型制作软件得到.这里就不叙述有关模 ...

  7. 关于PCB 3D 模型的快速导入方法

    altium designer中创建的3D library 只能查看3D效果,并没有其他功能,经测试在原理图编辑界面通过给元件添加 PCB 3D 并不能真正添加3D模型,这样添加根本没有效果(显示不出 ...

  8. CSS3之简易的3D模型构建[原创开源]

    CSS3之简易的3D模型构建[开源分享] 先上一张图(成果图):这个是使用 3D建模空间[源码之一] 制作出来的模型之一 当然这是一部分模型特写, 之前还制作过枪的3D模型等等. 感兴趣的朋友可以自己 ...

  9. Android界面刷新方法

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...

随机推荐

  1. ExtJs迄今datefield控制设置默认值

    假设extjs4 datefield日期控件设置默认值.为当天的前一月,和后一月 Ext.Date.MONTH      月 Ext.Date.YEAR         年 Ext.Date.DAY  ...

  2. OCP解决问题052-- DROP PROFILE app_user

    133.You created a profile APP_USER and assigned it to the users. After a month, you decide to drop t ...

  3. 在Apk应用程序内,查找某个Activity。

    转载请注明出处:http://blog.csdn.net/droyon/article/details/39933677 Intent intent = new Intent(Intent.ACTIO ...

  4. Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got

    1.错误叙述性说明 20:27:34 call new_procedure(20150112) Error Code: 1318. Incorrect number of arguments for ...

  5. NServiceBus开发

    使用NServiceBus开发分布式应用 系列主题:基于消息的软件架构模型演变 NServiceBus 是一个.Net平台下开源的消息服务框架,这类产品有时也被称作ESB(Enterprise Ser ...

  6. android中获取屏幕的信息

    获取屏幕信息比较简单,可以通过android的sdk自带的工具类DisplayMetrics.话不多说,上代码: // 获取屏幕的信息 DisplayMetrics dm = new DisplayM ...

  7. [Apache Spark源代码阅读]天堂之门——SparkContext解析

    略微了解Spark源代码的人应该都知道SparkContext,作为整个Project的程序入口,其重要性不言而喻,很多大牛也在源代码分析的文章中对其做了非常多相关的深入分析和解读.这里,结合自己前段 ...

  8. 付款页面DEMO

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHRxdWVlbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  9. uva10954 - Add All(multiset功能)

    题目:10954 - Add All 题目大意:求n个数的和,可是有点不一样的是题目要求计算最少花费.每次两个数相加,得到的那个数就是每次计算的cost. 解题思路:之前没有想到用multiset,自 ...

  10. MyEclipse调整项目的顺序

    MyEclipse该项目是按照字母顺序排列的项目名称,无法调整. 例,我现在做Photo工程项目,向下位置,非常不方便: 可是,它有一个将项目分组的功能"Working Sets" ...