android圓形旋轉選單,而對於移動轉換功能支援

2021-09-07 01:51:29 字數 3670 閱讀 2839

lz該公司最近接手乙個專案,需要寫乙個圓形旋轉選單,和選單之間的移動換位支援,我本來以為這樣的demo如若網際網路是非常。想想你媽媽也幫不了我,空旋轉,但它不能改變位置,所以lz我們只能靠自己摸索。

在此貢獻出來給廣大碼農們共享。

話不多說,先上**:

自己定義view類:

public class roundspinview extends view 

};};

public inte***ce onroundspinviewlistener

public roundspinview(context context,attributeset attrs)

pfd = new paintflagsdrawfilter(0, paint.anti_alias_flag|paint.filter_bitmap_flag);

mpaint.setcolor(color.white);

mpaint.setstrokewidth(2);

mpaint.setantialias(true); //消除鋸齒

mpaint.setstyle(paint.style.stroke); //繪製空心圓

patheffect effects = new dashpatheffect(new float,1);

mpaint.setpatheffect(effects);

quadranttouched = new boolean ;

mgesturedetector = new gesturedetector(getcontext(),

new mygesturelistener());

setupstones(); }

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

/*** 初始化每乙個點

*/private void setupstones() else if(angle < 0)

stone.angle = angle;

stone.bitmap = bitmapfactory.decoderesource(getresources(),

startmenu + index);

angle += mdegreedelta;

mstones[index] = stone;

} }/**

* 又一次計算每乙個點的角度

*/private void resetstonesangle(float x, float y)

} /**

* 計算每乙個點的座標

*/private void computecoordinates()

} /**

* 計算某點的角度

* * @param x

* @param y

* @return

*/private int computecurrentangle(float x, float y)

log.d("roundspinview", "x:" + x + ",y:" + y + ",degree:" + degree);

return degree;

} private double startangle;

@override

public boolean dispatchtouchevent(motionevent event)

} else if (event.getaction() == motionevent.action_move) else

} else if (event.getaction() == motionevent.action_up)

computecoordinates();

invalidate();

mcur = -1;

}} // set the touched quadrant to true

quadranttouched[getquadrant(event.getx() - mpointx,

mpointy - event.gety())] = true;

mgesturedetector.ontouchevent(event);

return true;

} private class mygesturelistener extends ******ongesturelistener else

return true;

} @override

public boolean onsingletapup(motionevent e)

// toast.maketext(getcontext(), "position:"+cur, 0).show();

return true;

}return false;

} }private class flingrunnable implements runnable

@override

public void run()

} } /**

* @return the selected quadrant.

*/private static int getquadrant(double x, double y) else

return y >= 0 ?

2 : 3; } /* * 旋轉選單button */ private void rotatebuttons(double degree) else if(mstones[i].angle >=360) } computecoordinates(); invalidate(); } @override public void ondraw(canvas canvas) } /** * 把中心點放到中心處 * * @param canvas * @param bitmap * @param left * @param top */ private void drawincenter(canvas canvas, bitmap bitmap, float left, float top) private int getincircle(int x, int y) } return -1; } public void setonroundspinviewlistener(onroundspinviewlistener listener) class bigstone }

layout檔案**:

此外必須加入attr檔案設定相應的自己定義屬性:

<?xml version="1.0" encoding="utf-8"?>

接下來就是activity中的應用了:

public class mainactivity extends activity implements onroundspinviewlistener 

private void initview()

@override

public void onsingletapup(int position)

}}

注意:
rsv_test.setonroundspinviewlistener(this);
對自己定義view的自己定義***進行賦值

android圓形旋轉選單,並支援移動換位功能

lz最近接手公司乙個專案,需要寫乙個圓形的旋轉選單,並且支援選單之間的移動換位,本來以為這種demo應該網上是很多的,想不到度娘也是幫不了我,空有旋轉功能但是卻不能換位置,所以lz就只能靠自己摸索了。最終lz參考了網上的部分 重寫了乙個自定義的view終於實現了這個看似很吊,卻沒有實際意義的功能。在...

ios 圓形旋轉選單 實現ios常見選單效果的思路

目前見過的實現邊側選單的效果,比較流行的有以下三種 效果圖 1 選單欄覆蓋在部分主檢視上 1 最開始要實現這個效果,我想最簡單的方式就是 新增uiview,加上乙個self.view大小的子檢視,選單列表以外的區域設為透明灰色。後來發現,如果當前的控制器有顯示導航欄或者工具欄,這個子檢視就無法遮蓋住...

Android 仿酷點圓形選單

看見乙個人寫了乙個圓形的可以轉的選單,當時看的還是挺模糊的,最後自己模仿的寫了一遍,這是源 基本思想是這樣的 1,把每個圖示顯示的什麼圖示確定下來 2,計算每乙個點的座標,3,在activity就可以正確顯示出了 4,當我們移 標的時候,計算出移動後的圖示的角度,知道角度和半徑就可以設定它的座標啊,...