3D空間版UI的使用
1. 控件的使用:
1.1 VRTextView 的使用。
代碼使用如下:接口調(diào)用視需求而定,不一定全部都調(diào)用。
VRTextView start = new VRTextView(this);
start.setWidthAndHeight(6,6);
start.addTranslateAnimation3D(new MathC.Vector(0,-20,-60),new MathC.Vector(0,5,-60),500);
start.setAnimationRepeatMode(Animation.RepeatMode.NONE);
start.setTexture(R.drawable.start);
start.setTransparent(ANode.TRANSPARENT_STATE.SEMI_TRANSPARENT);
start.setLookAtListener(mOnLookAtListener);
start.setRotate(0,-30,0);
start.onLayout(-6,0);
start.setClipp(15,-3);
start.registerView();
start.playAnimation(0);
- 首先創(chuàng)建一個VRTextView 對象。
- 調(diào)用setWidthAndHeight(float width,float height)來設(shè)置該控件的寬高沟启。
@param width and height 設(shè)置寬高 - 調(diào)用setTexture(int texture)來給控件設(shè)置紋理(也就是圖片)。
@param texture 設(shè)置紋理的參數(shù)犹菇,是int類型 - addTranslateAnimation3D(new MathC.Vector(0,-20,-60),new MathC.Vector(0,5,-60),500)美浦、setAnimationRepeatMode(Animation.RepeatMode.NONE)以及.playAnimation(0)的配套使用。
@param fromPoint toPoint 設(shè)置位移動畫的起始點以及終點
@param time 設(shè)置動畫的總時長
@param Animation.RepeatMode 設(shè)置動畫播放的類型项栏,(這個接口參數(shù)浦辨,可以直接點進去查看類型,我代碼中有注釋的)
說明:首先添加動畫沼沈,然后設(shè)置動畫的參數(shù)流酬,然后就可以指定播放那個動畫,目前SDK中只能對位移動畫
可以添加多個一致類型的動畫列另,其他類型的都不能添加多個動畫芽腾。這點希望一定要注意。
比如說VRLayout也是同樣的道理页衙,希望能夠注意這一點摊滔,不要在這個地方出錯阴绢,也可以繼續(xù)優(yōu)化,
參考我寫的位移動畫的添加多個動畫的代碼艰躺,擴展性還是挺高的呻袭。 - 調(diào)用setLookAtListener(mOnLookAtListener)來設(shè)置監(jiān)聽事件。
@param ANode.OnLookAtListener 設(shè)置監(jiān)聽的類型 - 調(diào)用onLayout(float left,float top)來設(shè)置子控件相對與父控件的的位置腺兴,如果是單個的ui那么不要使用這個接口左电。
@param left 子控件相對與父布局的左上角坐標(biāo)點的距離(水平距離)
@param top 子控件相對于父布局的左上角坐標(biāo)點的距離(垂直距離) - 調(diào)用setRotate(0,-30,0)接口來進行旋轉(zhuǎn)的設(shè)置。(繞y軸順時針旋轉(zhuǎn)30度)
@param rotateX 這個是繞x旋轉(zhuǎn)的角度页响,示范旋轉(zhuǎn)案例 :setRotate(30,0,0)篓足,單純的繞x軸旋轉(zhuǎn)。
@param rotateY 這個是繞y軸旋轉(zhuǎn)的角度 闰蚕,示范旋轉(zhuǎn)案例:setRotate(0,30,0)栈拖,單純的繞y軸旋轉(zhuǎn)
@param rotateZ 這個是繞z周旋轉(zhuǎn)的角度,示范旋轉(zhuǎn)案例:setRotate(0,0,30)没陡,單純的繞z軸旋轉(zhuǎn)
說明:正值是逆時針旋轉(zhuǎn)涩哟,負(fù)值是順時針旋轉(zhuǎn),可以繞多個軸同時旋轉(zhuǎn)例如:setRotate(30,30,0) - 調(diào)用setClipp(float maxY,float minY)設(shè)置Y軸上的剪裁的空間诗鸭,在這個空間中顯示像素染簇,超過這個區(qū)間則舍棄會繪制参滴。
@param maxY 在y軸上的最大的值强岸,小于這個值則顯示像素,超過這個值則不繪制像素砾赔。
@param minY 在y軸上的最小的值蝌箍,小于這個值則舍棄像素,大于這個值則繪制像素暴心。 - 調(diào)用setTransparent(ANode.TRANSPARENT_STATE.SEMI_TRANSPARENT)接口來進行混合的設(shè)置妓盲,
@param SEMI_TRANSPARENT 是半透明設(shè)置
@param TRANSPARENT 不透明設(shè)置
@param OPACUE 透明設(shè)置 - 調(diào)用registerView()這個接口,將創(chuàng)建的控件添加進渲染層专普。
1.2 VRLayout 的使用悯衬。
代碼清單(有父布局與子布局):
VRTextView[] textViews = new VRTextView[6];
VRLayout listView = new VRLayout(30,40, VRUIViewGroup.ViewType.ListView,this);
listView.setPosition(70,45,-60);
listView.setRotate(0,-30,0);
listView.setTexture(R.drawable.zx);
for(int i = 0;i<6;i++){
textViews[i] = new VRTextView(this);
textViews[i].setWidthAndHeight(25,8);
textViews[i].setTexture(R.drawable.bb);
textViews[i].onLayout(2.5f,10*(i-1)+4);
textViews[i].setClipp(60,32);
textViews[i].setLookAtListener(mOnLookAtListener);
listView.addView(textViews[i]);
}
listView.registerView();
-
創(chuàng)建VRLayout時,傳遞參數(shù)ListView檀夹,則創(chuàng)建ListView布局筋粗,并且指定寬高。
@param width 指定控件布局的寬炸渡。 @param height 指定控件布局的高娜亿。 @param ViewType 指定控件的布局類型 說明:現(xiàn)在空間的布局類型都是自定義布局,也就是說通過Onlayout這個接口來指定子控件 相對父控件的位置蚌堵。但是ListView只能在一行只能是一個子控件其他布局類型可以有多個子控件买决。
調(diào)用listView.addView(textViews[i])接口沛婴,將子控件添加進父布局中。
說明:注意這個接口只能是將子布局添加進父布局的時候才能夠使用的督赤,單個布局不要使用這個接口嘁灯,沒有意義。父布局可以隱藏也可以顯示够挂,如果想讓父布局顯示那么就調(diào)用setTransparent(ANode.TRANSPARENT)旁仿,
接口在介紹VRTextView的時候介紹過這個接口參數(shù)中的含義,可以查看一下孽糖,這里不做介紹了枯冈。
1.3 VRUIProgressBar 的使用。
代碼清單:
VRUIProgressBar vruiProgressBar = new VRUIProgressBar(this,R.drawable.aa);
vruiProgressBar.setWidthAndHeight(90,6);
vruiProgressBar.setTransparent(ANode.TRANSPARENT_STATE.TRANSPARENT);
vruiProgressBar.setLookAtListener(mOnLookAtListener);
vruiProgressBar.onLayout(4,6);
vruiProgressBar.setInterX(0.0f);
vruiProgressBar.setClipp(15,-3);
vruiProgressBar.registerView();
- setInterX(0.0f)這個接口是來設(shè)置進度條的顯示的進度比例办悟,其參數(shù)值是0-1尘奏。水平的是setInterX,
如果進度條是垂直的病蛉,那么設(shè)置的是setInterY接口(進度條類型包括兩種:水平炫加、垂直)。
@param radio 該參數(shù)區(qū)間是0 - 1铺然,類型是float俗孝,如果視頻播放了一,那么設(shè)置為0.5魄健,初始值得0.0赋铝。 - 其他的接口都在上面介紹過,請查閱上面的API來進行使用沽瘦,這里不在贅述革骨。
2. UI控件的整體的接口作用的介紹。
VRUIView類中的接口介紹
- updataTexture(int texture) 該接口可以動態(tài)的更新每個布局控件的紋理析恋。
@param texture 該參數(shù)提供了兩種類型良哲,一種是int類型,一種是Bitmap類型助隧,視需求而定筑凫。 - setPosition(float x, float y, float z) 設(shè)置控件的初始位置,注意一點并村,該接口只能在初始化的時候可以調(diào)用巍实,
而在動畫中,調(diào)用該接口是沒有效果跟意義的橘霎。
@param x y z 三個參數(shù)是在x軸y軸z周上的位置蔫浆,然后就可以確定三維空間上的唯一一個點。 - setRotate(float x, float y, float z) 設(shè)置控件的初始旋轉(zhuǎn)角度姐叁,注意一點瓦盛,該接口同樣是只能在初始化的時候
可以調(diào)用洗显。
@param x y z 三個參數(shù)是分別繞x軸y軸z軸旋轉(zhuǎn)的角度。 - setAnimationListener(IAnimationListener iAnimationListener) 該接口使用可以在編輯頁面中可以實現(xiàn)
new IAnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationUpdate(Animation animation, double interpolatedTime) { }
};
@param 這個是動畫的監(jiān)聽實現(xiàn)的方法原环,onAnimationEnd(Animation animation)該方法是在動畫結(jié)束后回調(diào)的方法挠唆。
@param onAnimationRepeat(Animation animation) 是動畫重復(fù)播放完一次回調(diào)的方法。
@param onAnimationStart(Animation animation) 動畫開始播放時的回調(diào)方法嘱吗。
@param onAnimationUpdate(Animation animation, double interpolatedTime) 在播放動畫期間一直回調(diào)的方法玄组,期間會傳遞回來時間。 - addRotatePointAnimation3D(MathC.Vector fromAngle, MathC.Vector toAngle, MathC.Vector rotatePoint, long time)是添加繞某點旋轉(zhuǎn)的動畫接口參數(shù)谒麦。
@param fromAngle 起始的旋轉(zhuǎn)角度
@param toAngle 終止的旋轉(zhuǎn)角度俄讹。
@param rotatePoint 圍繞某點旋轉(zhuǎn)的旋轉(zhuǎn)點。
@param time 動畫播放的總時間绕德。
說明:這個動畫只能是單個ui的時候可以設(shè)置這種動畫患膛,但是如果是有父布局的話,
那么這個動畫是有bug的耻蛇,在矩陣庫與四元數(shù)庫還沒有真正應(yīng)用到這個SDK庫中的時候踪蹬,
這個只要包含旋轉(zhuǎn)功能的且是有父布局的,那么都不行使用臣咖,只能是單個ui使用才可以跃捣。 - addRotateSelfAnimation3D(MathC.Vector fromAngle, MathC.Vector toAngle, long time)是給單個ui添加繞自身旋轉(zhuǎn)的動畫
@param fromAngle 起始的旋轉(zhuǎn)角度
@param toAngle 終止的旋轉(zhuǎn)角度。 - addBezierAnimation3D(MathC.Vector bizerConP1, MathC.Vector bizerConP2, MathC.Vector toPoint, long time)添加貝塞爾曲線夺蛇,這個是可以個單個ui或者給有哦子視圖的Layout添加動畫的疚漆。
@param bizerConP1 貝塞爾曲線的第一個控制點。
@param bizerConP2 貝塞爾曲線的第二個控制點蚊惯。
@param toPoint 貝塞爾曲線的目標(biāo)點愿卸。
說明:貝塞爾曲線是從空間初始的默認(rèn)的位置到達(dá)規(guī)定的目標(biāo)點灵临,中間有兩個控制點截型,這樣曲線計算出來是平滑的。
VRLayout中的接口介紹
- updataViewGroupPosition(MathC.Vector parentPosition, MathC.Vector parentRotate)該接口接受的是父布局的位置以及旋轉(zhuǎn)的參數(shù)儒溉,然后子控件會跟隨父布局進行變換(可以實時的進行更新位置)宦焦。
@param parentPosition 這個參數(shù)接受父布局的位置,不能接受子控件的位置顿涣,然后接受父布局的位置波闹,會更新子控件的位置的。
@param parentRotate 這個參數(shù)接受父布局的旋轉(zhuǎn)參數(shù)涛碑,如果父布局沒有旋轉(zhuǎn)精堕,那么其中的x y z設(shè)置為0就可以。 - lookOff(ANode sprite) 響應(yīng)監(jiān)聽事件蒲障。lookActive(ANode sprite)同理歹篓。
@param sprite接受矩形的類型為ANode瘫证。
說明:
——在整個ui空間中的數(shù)組中,記住最重要的一點庄撮,如果是有父子布局的背捌,那么數(shù)組中第一個是父布局的ANode對象,后面是自控件的ANode對象洞斯。一定要注意這一點毡庆,并且其中測繪計量子控件等一些算法已經(jīng)成熟,可以在其中擴展烙如。
——這里只是介紹了最常用的接口么抗,這些接口可以組裝出來最常用的一些特效,如果看不懂API那么可以直接看源代碼亚铁,這樣對于使用更有幫助乖坠。