我觉得我将脱离这个论坛的背景,如果我愿意,请指导我正确的方向.
我是为网站创建一个360度旋转产品预览.例如:
http://uniqstudios.co.uk/vid-360/interactive-360-rotate-rich-media-2
我想知道是否有一种简单的方法可以做到这一点,比如我们如何拥有全景照片应用程序,我是否可以使用某些应用程序创建这样的东西?或者有特定的相机来做它.
另外,请让我知道如何在网站上嵌入这些360度旋转图像.
提前致谢,指导我到正确的论坛,或者在这里帮助我.
Zeeshan.
解决方法
如果你有不同角度的2D图像(如果你有gif图像,你可以从中提取帧),你可以通过以下方式做到:
在drawable文件夹中定义一个axml:
image_3D_images.xml
<level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:maxLevel="0" android:drawable="@drawable/bg_01" /> <item android:maxLevel="1" android:drawable="@drawable/bg_02" /> <item android:maxLevel="2" android:drawable="@drawable/bg_03" /> <item android:maxLevel="3" android:drawable="@drawable/bg_04" /> <item android:maxLevel="4" android:drawable="@drawable/bg_05" /> </level-list>
然后用这样的imageview创建你的布局:
activity_3d_view.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/santafe3dview" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/image_3d_images" android:scaleType="fitXY" /> </RelativeLayout>
然后在你的活动中写下面的代码:
Launcher3DViewActivity.java:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.activity_3d_view); m360DegreeImageView = (ImageView)findViewById(R.id.santafe3dview); } @Override public boolean onTouchEvent(MotionEvent event){ int action = MotionEventCompat.getActionMasked(event); switch(action) { case (MotionEvent.ACTION_DOWN) : mStartX = (int)event.getX(); mStartY = (int)event.getY(); return true; case (MotionEvent.ACTION_MOVE) : mEndX = (int)event.getX(); mEndY = (int)event.getY(); if((mEndX - mStartX) > 3) { mImageIndex++; if(mImageIndex > 56 ) mImageIndex = 0; m360DegreeImageView.setImageLevel(mImageIndex); } if((mEndX - mStartX) < -3) { mImageIndex--; if(mImageIndex <0) mImageIndex = 56; m360DegreeImageView.setImageLevel(mImageIndex); } mStartX = (int)event.getX(); mStartY = (int)event.getY(); return true; case (MotionEvent.ACTION_UP) : mEndX = (int)event.getX(); mEndY = (int)event.getY(); return true; case (MotionEvent.ACTION_CANCEL) : return true; case (MotionEvent.ACTION_OUTSIDE) : return true; default : return super.onTouchEvent(event); } }