自定义Touch360ImageView的代码如下:

package com.example.myapplication;import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.LevelListDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;public class Touch360ImageView extends androidx.appcompat.widget.AppCompatImageView {private float mDownX;private float mLastX;private long mTouchTime;private int mImageLevel;private int mDrawableCount;private static final int TOUCH_SPACING = 5; //触摸间距private static final int TIME_INTERVAL = 200; //触摸时间间隔public Touch360ImageView(Context context) {this(context, null);}public Touch360ImageView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public Touch360ImageView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.Touch360ImageView);int arrayId = typedArray.getResourceId(R.styleable.Touch360ImageView_drawableArray, R.array.image_list);typedArray.recycle();TypedArray drawableArray = context.getResources().obtainTypedArray(arrayId);LevelListDrawable levelListDrawable = new LevelListDrawable();mDrawableCount = drawableArray.length();for (int i = 0; i < mDrawableCount; i++) {levelListDrawable.addLevel(0, i, getResources().getDrawable(drawableArray.getResourceId(i, 0)));}setImageDrawable(levelListDrawable);drawableArray.recycle();}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:mDownX = event.getRawX();mLastX = mDownX;mTouchTime = System.currentTimeMillis();break;case MotionEvent.ACTION_MOVE:int dx = (int) (event.getRawX() - mLastX);mLastX = event.getRawX();if (dx > TOUCH_SPACING) {mImageLevel++;if (mImageLevel >= mDrawableCount) {mImageLevel = 0;}} else if (dx < -TOUCH_SPACING) {mImageLevel--;if (mImageLevel < 0) {mImageLevel = mDrawableCount - 1;}}setImageLevel(mImageLevel);break;case MotionEvent.ACTION_UP:if (System.currentTimeMillis() - mTouchTime < TIME_INTERVAL && Math.abs(mDownX - event.getRawX()) < TOUCH_SPACING) {performClick();return false;}break;}return true;}
}

可根据效果调整触摸间距和时间间隔以达到更好的效果。支持根据自定义图片数量来刷新图片。
布局文件中的代码

    <com.example.myapplication.Touch360ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"app:drawableArray="@array/image_list"/>

arrays.xml的数组定义如下

    <array name="image_list"><item>@drawable/car_0001</item><item>@drawable/car_0010</item><item>@drawable/car_0020</item><item>@drawable/car_0030</item><item>@drawable/car_0040</item><item>@drawable/car_0050</item><item>@drawable/car_0060</item><item>@drawable/car_0070</item><item>@drawable/car_0080</item><item>@drawable/car_0090</item><item>@drawable/car_0100</item><item>@drawable/car_0110</item><item>@drawable/car_0120</item><item>@drawable/car_0130</item><item>@drawable/car_0140</item><item>@drawable/car_0150</item><item>@drawable/car_0160</item><item>@drawable/car_0170</item><item>@drawable/car_0180</item><item>@drawable/car_0190</item><item>@drawable/car_0200</item><item>@drawable/car_0210</item><item>@drawable/car_0220</item><item>@drawable/car_0230</item><item>@drawable/car_0240</item><item>@drawable/car_0250</item><item>@drawable/car_0260</item><item>@drawable/car_0270</item><item>@drawable/car_0280</item><item>@drawable/car_0290</item><item>@drawable/car_0300</item><item>@drawable/car_0310</item><item>@drawable/car_0320</item><item>@drawable/car_0330</item><item>@drawable/car_0340</item><item>@drawable/car_0350</item><item>@drawable/car_0360</item></array>

这里用到37张图片,实际上36张足够,最后一张图片car_0360和第一张图片car_0001是同一图片。当然尽量不要放入更多的图片以免OOM。
attrs.xml中自定义图片数组引用属性如下:

    <declare-styleable name="Touch360ImageView"><attr name="drawableArray" format="reference"/></declare-styleable>

最终效果如下:

这是替换3D效果的一种简单方案,要实现更好的360旋转或更高级的效果还是得依赖3D引擎,可以利用第三方3D软件生成android所需要的jar和so库集成在android项目里,本篇不做详细描述。

自定义支持360度旋转的车模View相关推荐

  1. 【精心挑选】10款基于 jQuery 的图片360度旋转插件

    之前的文章向大家分享了实现网站功能的各种优秀的 jQuery 插件,今天这篇文章向大家推荐10款基于 jQuery 的图片360度旋转插件,同时还有非常详细的制作教程可以学习和参考.图片旋转展示是一种 ...

  2. jQuery 图像 360 度旋转插件

    13 款最热门的 jQuery 图像 360 度旋转插件推荐 时间:02月07日 在 web 页面上使用 jQuery 图像 360 度旋转插件是最美也是最方便的显示图像的方式.这些超级棒的 360° ...

  3. 精心挑选10款基于 jQuery 的图片360度旋转插件

    之前的文章向大家分享了实现网站功能的各种优秀的 jQuery 插件,今天这篇文章向大家推荐10款基于 jQuery 的图片360度旋转插件,同时还有非常详细的制作教程可以学习和参考.图片旋转展示是一种 ...

  4. 360环物如何发布html,制作网页上的360度旋转全景图PixMaker使用详细教程

    PixMaker是一个简单方便的360度全景图片制作软件,它可以将描写一个环型场景的多个连续图片无缝地接合在一起,形成一个360度"场景"图片.可以在网页上播放,使你的页面更加生动 ...

  5. spritespin.js插件实现图片360度旋转

    1. 官网:http://spritespin.ginie.eu/: SpriteSpin是一个jQuery插件,可将图像帧转换为动画.它需要一个图像阵列或一个精确的精灵片,并像翻转书一样逐帧播放它们 ...

  6. 【Blender】使用Blender渲染一段360度旋转的动画

    目录 一.前言 二.方法描述 三.渲染设置 四.结果 一.前言 本文主要讲述了如何使用Blender渲染一段物体360度旋转的动画. 渲染好的效果如下: 二.方法描述 第一步:shift+A,我们在B ...

  7. css3动画旋转360度,CSS3旋转动画(360度旋转、旋转放大、放大、移动) 用法和实例...

    CSS3旋转动画(360度旋转.旋转放大.放大.移动) 用法和实例 Internet Explorer 10.Firefox.Opera 支持 transform 属性. Internet Explo ...

  8. css3 向上淡入 小图标翻转 360度旋转

    代码 <!DOCTYPE HTML> <html> <style type="text/css">div {border: 1px solid ...

  9. 手机电路板文件_手机中框自动点胶机,360度旋转点胶,解决高精度点胶问题

    全自动点胶机应用在很多类型的半成品中,包括手机中框涂胶与金属扣涂料等,而手机飞速发展的同时对 手机质量的要求也越来越高,自然对点胶机的要求也越来越高.下面我们一起来了解下蜻蜓智能针对手机边框点胶难的问 ...

最新文章

  1. 南通一酒店搞了个“虎景房”,这睡得着?
  2. 机器学习算法加强——XGBoost实践
  3. 子程序与中断程序的异同_【干货】plc怎样理解中断功能,其作用是什么?
  4. 诊断SQLSERVER问题常用的日志
  5. java: 程序包lombok不存在_Java开发神器:Lombok 学习指南
  6. C程序中如何区分windowsx86,x64
  7. java短信验证码实现_社交APP开发短信验证是通过什么技术实现
  8. Caffe学习:使用pycaffe绘制网络结构
  9. 【读书笔记】深入浅出数据分析
  10. Python游戏篇:细节之大型游戏爆炸效果(附代码)
  11. Mac下实现Word文档批量转换为PDF
  12. Springboot+Vue开发的简单的后台管理系统
  13. 显微镜自动聚焦原理是什么_光学显微镜自动聚焦算法研究
  14. 2022年虎年新春致地球上全体读者朋友们的一封书信
  15. 01 复杂度分析(上):时间、空间复杂度讲解
  16. 重磅 | Hinton、LeCun、Bengio联合署名深度学习综述,《Nature》纪念人工智能60周年专题...
  17. python 四维数据怎么看性别_四维b超数据怎么看性别
  18. oracle11g 客户端字符集,查看 Oracle11g 的字符集
  19. 黑马程序员C++笔记
  20. 0927-1这张图可得记一辈子了

热门文章

  1. 前端文件下载的打开方式
  2. 在html5绘制直线的两个方法,html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点...
  3. Vue项目打包部署到服务器(Linux)
  4. INTJ型人格适合选择哪些专业?
  5. Javascript安全那些事
  6. 线下各店铺更新换代刷脸服务商抓住机会
  7. ios 微信小程序 chooseImage 相机拍照跳转页面崩溃
  8. 视频自媒体快速落地,新浪SHOW缘何“快人一步”?
  9. GoDaddy优惠码
  10. ZWCAD Software ZW3D 2012 SP2 v16 20-Lz0