導航:首頁 > 操作系統 > android圓形旋轉菜單

android圓形旋轉菜單

發布時間:2022-09-27 05:35:53

android 怎麼把button變成圓形

使用shape,請看下面截圖,例子來自於android學習手冊,360手機助手中下載,裡面有108個例子、源碼還有文檔。



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

<shape

xmlns:Android="http://schemas.android.com/apk/res/android"

android:shape="oval">

<!-- 填充的顏色 -->

<solid android:color="#FFFFFF"/>

<!-- 設置按鈕的四個角為弧形 -->

<!-- android:radius 弧形的半徑 -->

<corners android:radius="360dip"/>

<!-- padding: Button 裡面的文字與Button邊界的間隔 -->

<padding

android:left="10dp"

android:top="10dp"

android:right="10dp"

android:bottom="10dp"

/>

</shape>

-----Main layout文件

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/soft_info"

/>

<!—直接設置背景 -->

<Button

android:id="@+id/roundBtn1"

android:background="@drawable/btn_oval"

android:layout_width="50dip"

android:layout_height="50dip"

/>

<!— 調用shape自定義xml文件 -->

<Button

android:id="@+id/roundBtn"

android:text="橢圓按鈕"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/main_menu_btnshape"

/>

</LinearLayout>

----acitivity文件

public class MyLifeActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

}

⑵ android中,如何做圓形的button按鈕

自己繪制圓形的圖片,然後在button布局裡面用BackgroundDrawable設置為button背景。android中是不帶圓形的button的

⑶ android開發怎樣改變菜單的形狀

有一種半圓形彈出菜單,你可以看看,鏈接:http://www.cnblogs.com/mudoot/archive/2012/01/19/path_composer_menu.html

⑷ Android圓形菜單,做一個像Iphone的Assistivetouch,可移動懸浮窗口,而且點開有各種功能,大神給點思路

1、可移動懸浮,需要很高的許可權,向系統申請彈窗許可權。
2、如果是跨界面,需要services中創建,並顯示
3、點開圓形菜單建議使用看下這個:https://github.com/Nightonke/BoomMenu

⑸ 如何在android studio 中實現圓餅圖的轉動

/**
* 隨手記中可以任意旋轉的炫酷餅圖的實現原理
*
* 小記:
* 在實現的過程中,主要是用到了一些數學計算來實現角度和屏幕位置坐標的計算
* 關於任意兩個點之間的角度計算的問題,一開始想了很久沒有結果,最後,一個偶然的靈光,讓整個
* 事情變得簡單起來,就是計算任意兩個點相對於中心坐標的角度的時候,首先,計算
* 每個點相對於x軸正方向的角度,這樣,總可以將其轉化為計算直角三角形的內角計算問題
* 再將兩次計算的角度進行減法運算,就實現了。是不是很簡單?呵呵,對於像我們這樣數學
* 沒有學好的開發者來說,也只有這樣化難為簡了
*
* @author liner
*
*/
public class PieChart extends View{
public static final String TAG = "PieChart";
public static final int ALPHA = 100;
public static final int ANIMATION_DURATION = 800;
public static final int ANIMATION_STATE_RUNNING = 1;
public static final int ANIMATION_STATE_DOWN = 2;
/**
* 不要問我這個值是怎麼設置的。這個就是圖片中的一大塊圓形區域對應的長方形四個邊的坐標位置
* 具體的值,自己需要多次嘗試並調整了。這樣,我們的餅圖就是相對於這個區域來畫的
*/
private static final RectF OVAL = new RectF(18,49,303,340);
private int[] colors; //每部分的顏色值
private int[] values; //每部分的大小
private int[] degrees; //值轉換成角度
private String[] titles; //每部分的內容
private Paint paint;
private Paint maskPaint;
private Paint textPaint;
private Point lastEventPoint;
private int currentTargetIndex = -1;
private Point center; //這個是餅圖的中心位置
private int eventRadius = 0; //事件距離餅圖中心的距離
//測試的時候使用的
//private ChartClickListener clickListener;
private Bitmap mask; //用於遮罩的Bitmap
private int startDegree = 90; //讓初始的時候,圓餅是從箭頭位置開始畫出的
private int animState = ANIMATION_STATE_DOWN;
private boolean animEnabled = false;
private long animStartTime;
public PieChart(Context context) {
super(context);
init();
}
public PieChart(Context context, AttributeSet attrs){
this(context, attrs, 0);
}
public PieChart(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
init();
}
private void init(){
paint = new Paint();
maskPaint = new Paint();
textPaint = new Paint();
textPaint.setColor(Color.WHITE);
textPaint.setTypeface(Typeface.DEFAULT_BOLD);
textPaint.setAlpha(100);
textPaint.setTextSize(16);
values = new int[]{
60,
90,
30,
50,
70
};
//titles = new String[]{
//"川菜",
//"徽菜",
//"粵菜",
//"閩菜",
//"湘菜"
//};
//測試文字居中顯示
titles = new String[]{
"我是三歲",
"說了算四大皆空",
"士大",
"史蒂芬森地",
"湘"
};
colors = new int[]{
Color.argb(ALPHA, 249, 64, 64),
Color.argb(ALPHA, 0, 255, 0),
Color.argb(ALPHA, 255, 0, 255),
Color.argb(ALPHA, 255, 255, 0),
Color.argb(ALPHA, 0, 255, 255)
};
degrees = getDegrees();
//Drawable d = getResources().getDrawable(R.drawable.mask);
mask = BitmapFactory.decodeResource(getResources(), R.drawable.mask);
//獲取初始位置的時候,下方箭頭所在的區域
animEnabled = true; //同時,啟動動畫
}
//public void setChartClickListener(ChartClickListener l){
//this.clickListener = l;
//}
//計算總和
private int sum(int[] values){
int sum = 0;
for(int i=0; i<values.length;i++){
sum += values[i];
}
return sum;
}
/**
* 根據每部分所佔的比例,來計算每個區域在整個圓中所佔的角度
* 但是,有個小細節,就是計算的時候注意,可能並不能整除的情況,這個時候,為了
* 避免所有的角度和小於360度的情況,姑且將剩餘的部分送給某個部分,反正也不影響
* @return
*/
private int[] getDegrees(){
int sum = this.sum(values);
int[] degrees = new int[values.length];
for(int i=0; i<values.length; i++){
degrees[i] = (int)Math.floor((double)((double)values[i]/(double)sum)*360);
//Log.v("Angle", angles[i]+"");
}
int angleSum = this.sum(degrees);
if(angleSum != 360){
//上面的計算可能導致和小於360
int c = 360 - angleSum;
degrees[values.length-1] += c; //姑且讓最後一個的值稍大點
}
return degrees;
}
/**
* 重寫這個方法來畫出整個界面
*/
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(animEnabled){
/**
* 說明是啟動的時候,需要旋轉著畫出餅圖
*/
Log.e(TAG, "anim enabled");
if(animState == ANIMATION_STATE_DOWN){
animStartTime = SystemClock.uptimeMillis();
animState = ANIMATION_STATE_RUNNING;

}

final long currentTimeDiff = SystemClock.uptimeMillis() - animStartTime;
int currentMaxDegree = (int)((float)currentTimeDiff/ANIMATION_DURATION*360f);
Log.e(TAG, "當前最大的度數為:"+currentMaxDegree);
if(currentMaxDegree >= 360){
//動畫結束狀態,停止繪制
currentMaxDegree = 360;
animState = ANIMATION_STATE_DOWN;
animEnabled = false;
}
int[] degrees = getDegrees();
int startAngle = this.startDegree;

//獲取當前時刻最大可以旋轉的角度所位於的區域
int maxIndex = getEventPart(currentMaxDegree);

//根據不同的顏色畫餅圖
for(int i=0; i<= maxIndex; i++){
int currentDegree = degrees[i];

if(i== maxIndex){
//對於當前最後一個繪制區域,可能只是一部分,需要獲取其偏移量
currentDegree = getOffsetOfPartStart(currentMaxDegree, maxIndex);
}

if(i > 0){
//注意,每次畫餅圖,記得計算startAngle
startAngle += degrees[i-1];
}

paint.setColor(colors[i]);
canvas.drawArc(OVAL, startAngle, currentDegree, true, paint);
}

if(animState == ANIMATION_STATE_DOWN){
//如果動畫結束了,則調整當前箭頭位於所在區域的中心方向
onStop();

}else{
postInvalidate();
}

}else{
int[] degrees = getDegrees();
int startAngle = this.startDegree;

/**
* 每個區域的顏色不同,但是這里只要控制好每個區域的角度就可以了,整個是個圓
*/
for(int i=0; i<values.length; i++){
paint.setColor(colors[i]);
if(i>0){
startAngle += degrees[i-1];
}
canvas.drawArc(OVAL, startAngle, degrees[i], true, paint);
}
}


/**
* 畫出餅圖之後,畫遮罩圖片,這樣圖片就位於餅圖之上了,形成了遮罩的效果
*/
canvas.drawBitmap(mask, 0, 0, maskPaint);

/**
* 根據當前計算得到的箭頭所在區域顯示該區域代表的信息
*/
if(currentTargetIndex >= 0){
String title = titles[currentTargetIndex];
textPaint.setColor(colors[currentTargetIndex]);
//簡單作個計算,讓文字居中顯示
int width = title.length()*17;
canvas.drawText(title, 157-width/2+3, 383, textPaint);
}
}

/**
* 處理餅圖的轉動
*/
public boolean onTouchEvent(MotionEvent event){

if(animEnabled && animState == ANIMATION_STATE_RUNNING){
return super.onTouchEvent(event);
}

Point eventPoint = getEventAbsoluteLocation(event);
computeCenter(); //計算中心坐標

//計算當前位置相對於x軸正方向的角度
//在下面這個方法中計算了eventRadius的
int newAngle = getEventAngle(eventPoint, center);

int action = event.getAction();

switch (action) {
case MotionEvent.ACTION_DOWN:
lastEventPoint = eventPoint;
if(eventRadius > getRadius()){
/**
* 只有點在餅圖內部才需要處理轉動,否則直接返回
*/
Log.e(TAG, "當前位置超出了半徑:"+eventRadius+">"+getRadius());
return super.onTouchEvent(event);
}
break;
case MotionEvent.ACTION_MOVE:
//這里處理滑動
rotate(eventPoint, newAngle);
//處理之後,記得更新lastEventPoint
lastEventPoint = eventPoint;
break;
case MotionEvent.ACTION_UP:
onStop();
break;
default:
break;
}

return true;
}

/**
* 當我們停止旋轉的時候,如果當前下方箭頭位於某個區域的非中心位置,則我們需要計算
* 偏移量,並且將箭頭指向中心位置
*/
private void onStop() {
int targetAngle = getTargetDegree();
currentTargetIndex = getEventPart(targetAngle);
int offset = getOffsetOfPartCenter(targetAngle, currentTargetIndex);
/**
* offset>0,說明當前箭頭位於中心位置右邊,則所有區域沿著順時針旋轉offset大小的角度
* offset<0,正好相反
*/
startDegree += offset;
postInvalidateDelayed(200);
}
private void rotate(Point eventPoint, int newDegree) {
//計算上一個位置相對於x軸正方向的角度
int lastDegree = getEventAngle(lastEventPoint, center);

/**
* 其實轉動就是不斷的更新畫圓弧時候的起始角度,這樣,每次從新的起始角度重畫圓弧就形成了轉動的效果
*/
startDegree += newDegree-lastDegree;

//轉多圈的時候,限定startAngle始終在-360-360度之間
if(startDegree >= 360){
startDegree -= 360;
}else if(startDegree <= -360){
startDegree += 360;
}

Log.e(TAG, "當前startAngle:"+startDegree);

//獲取當前下方箭頭所在的區域,這樣在onDraw的時候就會轉到不同區域顯示的是當前區域對應的信息
int targetDegree = getTargetDegree();
currentTargetIndex = getEventPart(targetDegree);

//請求重新繪制界面,調用onDraw方法
postInvalidate();
}


/**
* 獲取當前事件event相對於屏幕的坐標
* @param event
* @return
*/
protected Point getEventAbsoluteLocation(MotionEvent event){
int[] location = new int[2];
this.getLocationOnScreen(location); //當前控制項在屏幕上的位置

int x = (int)event.getX();
int y = (int)event.getY();

x += location[0];
y += location[1]; //這樣x,y就代表當前事件相對於整個屏幕的坐標

Point p = new Point(x, y);

Log.v(TAG, "事件坐標:"+p.toString());

return p;
}
/**
* 獲取當前餅圖的中心坐標,相對於屏幕左上角
*/
protected void computeCenter(){
if(center == null){
int x = (int)OVAL.left + (int)((OVAL.right-OVAL.left)/2f);
int y = (int)OVAL.top + (int)((OVAL.bottom - OVAL.top)/2f)+50; //狀態欄的高度是50
center = new Point(x,y);
//Log.v(TAG, "中心坐標:"+center.toString());
}
}
/**
* 獲取半徑
*/
protected int getRadius(){
int radius = (int)((OVAL.right-OVAL.left)/2f);
//Log.v(TAG, "半徑:"+radius);
return radius;
}
/**
* 獲取事件坐標相對於餅圖的中心x軸正方向的角度
* 這里就是坐標系的轉換,本例中使用餅圖的中心作為坐標中心,就是我們從初中到大學一直使用的"正常"坐標系。
* 但是涉及到圓的轉動,本例中一律相對於x正方向順時針來計算某個事件在坐標系中的位置
* @param eventPoint
* @param center
* @return
*/
protected int getEventAngle(Point eventPoint, Point center){
int x = eventPoint.x - center.x;//x軸方向的偏移量
int y = eventPoint.y - center.y; //y軸方向的偏移量
//Log.v(TAG, "直角三角形兩直邊長度:"+x+","+y);
double z = Math.hypot(Math.abs(x), Math.abs(y)); //求直角三角形斜邊的長度
//Log.v(TAG, "斜邊長度:"+z);
eventRadius = (int)z;
double sinA = (double)Math.abs(y)/z;
//Log.v(TAG, "sinA="+sinA);
double asin = Math.asin(sinA); //求反正玄,得到當前點和x軸的角度,是最小的那個
//Log.v(TAG, "當前相對偏移角度的反正弦:"+asin);
int degree = (int)(asin/3.14f*180f);
//Log.v(TAG, "當前相對偏移角度:"+angle);
//下面就需要根據x,y的正負,來判斷當前點和x軸的正方向的夾角
int realDegree = 0;
if(x<=0 && y<=0){
//左上方,返回180+angle
realDegree = 180+degree;
}else if(x>=0 && y<=0){
//右上方,返回360-angle
realDegree = 360-degree;
}else if(x<=0 && y>=0){
//左下方,返回180-angle
realDegree = 180-degree;
}else{
//右下方,直接返回
realDegree = degree;
}
//Log.v(TAG, "當前事件相對於中心坐標x軸正方形的順時針偏移角度為:"+realAngle);
return realDegree;
}
/**
* 獲取當前下方箭頭位置相對於startDegree的角度值
* 注意,下方箭頭相對於x軸正方向是90度
* @return
*/
protected int getTargetDegree(){
int targetDegree = -1;
int tmpStart = startDegree;
/**
* 如果當前startAngle為負數,則直接+360,轉換為正值
*/
if(tmpStart < 0){
tmpStart += 360;
}
if(tmpStart < 90){
/**
* 如果startAngle小於90度(可能為負數)
*/
targetDegree = 90 - tmpStart;
}else{
/**
* 如果startAngle大於90,由於在每次計算startAngle的時候,限定了其最大為360度,所以
* 直接可以按照如下公式計算
*/
targetDegree = 360 + 90 - tmpStart;
部分代碼 網路知道限制字數 下載附件查看

⑹ android的自定圓盤菜單怎麼做

1、通用模式

上圖是圖片加文字,如果我想換成按鈕呢,或者我只需要圖片。這里就需要定製。怎麼辦呢,我採用了適配模式,大家都還記得 ListView的用法,我這里也借鑒了一下:

public void setAdapter(ListAdapter mAdapter) { this.mAdapter = mAdapter;
}123

這樣就可以實現Menu的高度定製。

2、構建菜單項

代碼參考buildMenuItems(),對mAdapter遍歷獲取子View,添加點擊事件,調用addView()添加到ViewGroup,這個時候系統就會調用onMeasure()對子View計算大小。

3、計算item大小

代碼參考measureMyself()和measureChildViews(),確定每個item的尺寸大小。

4、item布局

首先計算item(x,y)距離圓心的長度,我畫了一個草圖:

需要重寫onTouchEvent()方法,並把返回值改為true。處理手勢按下(ACTION_DOWN),抬起(ACTION_UP)的狀態。

首先我們要判斷手指按下是否在陰影局域內。注意手指按下是指尖局域與屏幕接觸,並不是一點,所以有誤差。

x = event.getX();
y = event.getY();if ((x - 圓心x) * (x - 圓心x) + (y - 圓心y) * (y - 圓心y) < (圓心x+ 誤差) * (圓心y+ 誤差)) {
isRange = true;
}12345

然後我們要計算運動的速度,我剛開始的想法是用重力加速度,非常感謝我同事小賈,他給了我更好的意見:速度=距離/時間。

ACTION_DOWN:

lastTouchTime = System.currentTimeMillis();1

ACTION_UP:

long timeStamp = System.currentTimeMillis() - lastTouchTime;float distance = (float) Math.sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y)); float speed = distance / timeStamp;123

然後我們通過對比手指按下的x的坐標,和抬起x的坐標,來判斷用戶是向左滑,還是右滑。

if (x1 - x > 0) {
isLeft = false;
} else {
isLeft = true;
}12345

最後通過handler來改變每次運動的角度,使Menu很自然的旋轉了起來:

if (isLeft) { //向左轉動
offsetRotation -= ANGLE;
} else { //向右轉動
offsetRotation += ANGLE;
} //速度衰減
speed -= SPEED_ATTENUATION;
invalidate();//重繪
handler.sendEmptyMessageDelayed(EMPTY_MESSAGE, 50);1234567891011

使用

1、xml布局

<com.github.ws.viewdemo.widget.CircleMenuLayout
android:id="@+id/cm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#f0f0f0">

</com.github.ws.viewdemo.widget.CircleMenuLayout>1234567

2、class文件

circleMenuLayout.setAdapter(new MyAdapter());

circleMenuLayout.setOnItemClickListener(new CircleMenuLayout.OnItemClickListener() {
@Override public void onItemClickListener(View v, int position) {
Toast.makeText(MainActivity.this, mList.get(position).text + "", Toast.LENGTH_SHORT).show();
}
});12345678

源碼我已上傳到github,地址https://github.com/HpWens/ViewDemo,再一次感謝大家的關注。

⑺ Android自定義控制項做一個圓形菜單,默認圓最上面的被選中,在圓形的中間顯示選中文本,怎麼實現

中國建設銀行的選擇按鈕樣式
https://www..com/s?wd=android%20%20%E5%9C%86%E5%BD%A2%E6%97%8B%E8%BD%AC%E8%8F%9C%E5%8D%95&rsv_spt=1&rsv_iqid=0xb9019cbe00085435&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=home_pg&rsv_enter=0&oq=android%2520%25E5%258E%259F%25E5%259E%258B%25E6%2597%258B%25E8%25BD%25AC%25E8%258F%259C%25E5%258D%2595&rsv_t=0f90uQj22EmGTWGU%%2B6JSxji%2FG%2FXZoR&rsv_pq=db4dc14a0008d994&inputT=5994&rsv_sug3=87&rsv_sug1=57&rsv_sug7=100&prefixsug=android%2520%2520%25E5%259C%2586%25E5%25BD%25A2%25E6%2597%258B%25E8%25BD%25AC%25E8%258F%259C%25E5%258D%2595&rsp=0&rsv_sug4=6690

⑻ android中使用canvas.drawText函數可否設置旋轉

使用Paint類的breakText對Text進行分解 然後分別使用Canvas的drawText進行繪制

⑼ 做一個Android懸浮窗口點擊後展開一個圓形菜單,圓形菜單放的是功能有點擊事件,請大神給我一個邏輯

https://github.com/ogaclejapan/ArcLayout
你可以看下這個

⑽ android中如何讓圖標繞一個中心點旋轉

1、定義一個ImageView
定義一個ImageView是為了裝載圖片,其中的圖片將被rotate用來進行旋轉,其他View亦可。
資源文件為
java代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/infoOperating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/operating"
android:scaleType="center">
</ImageView>
</LinearLayout>
其中的android:src為圖片內容,可使用附件中的圖片。
java代碼為
Java代碼
ImageView infoOperatingIV = (ImageView)findViewById(R.id.infoOperating);

2、定義rotate旋轉效果
在res/anim文件夾下新建tip.xml文件,內容如下
Java代碼
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:fromDegrees="0"
android:toDegrees="359"
android:ration="500"
android:repeatCount="-1"
android:pivotX="50%"
android:pivotY="50%" />
</set>
含義表示從0到359度開始循環旋轉,0-359(若設置成360在停止時會出現停頓現象)度旋轉所用時間為500ms,旋轉中心距離view的左頂點為50%距離,距離view的上邊緣為50%距離,即正中心,具體每個含義見下面的具體屬性介紹。
java代碼為
Java代碼
Animation operatingAnim = AnimationUtils.loadAnimation(this, R.anim.tip);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
setInterpolator表示設置旋轉速率。LinearInterpolator為勻速效果,Accelerateinterpolator為加速效果、DecelerateInterpolator為減速效果,具體可見下面android:interpolator的介紹。

a. 關於其中的屬性意義如下(紅色部分加以注意):
android:fromDegrees 起始的角度度數
android:toDegrees 結束的角度度數,負數表示逆時針,正數表示順時針。如10圈則比android:fromDegrees大3600即可
android:pivotX 旋轉中心的X坐標
浮點數或是百分比。浮點數表示相對於Object的左邊緣,如5; 百分比表示相對於Object的左邊緣,如5%; 另一種百分比表示相對於父容器的左邊緣,如5%p; 一般設置為50%表示在Object中心
android:pivotY 旋轉中心的Y坐標
浮點數或是百分比。浮點數表示相對於Object的上邊緣,如5; 百分比表示相對於Object的上邊緣,如5%; 另一種百分比表示相對於父容器的上邊緣,如5%p; 一般設置為50%表示在Object中心
android:ration 表示從android:fromDegrees轉動到android:toDegrees所花費的時間,單位為毫秒。可以用來計算速度。
android:interpolator表示變化率,但不是運行速度。一個插補屬性,可以將動畫效果設置為加速,減速,反復,反彈等。默認為開始和結束慢中間快,
android:startOffset 在調用start函數之後等待開始運行的時間,單位為毫秒,若為10,表示10ms後開始運行
android:repeatCount 重復的次數,默認為0,必須是int,可以為-1表示不停止
android:repeatMode 重復的模式,默認為restart,即重頭開始重新運行,可以為reverse即從結束開始向前重新運行。在android:repeatCount大於0或為infinite時生效
android:detachWallpaper 表示是否在壁紙上運行
android:zAdjustment 表示被animated的內容在運行時在z軸上的位置,默認為normal。
normal保持內容當前的z軸順序
top運行時在最頂層顯示
bottom運行時在最底層顯示

b. 運行速度
運行速度為運行時間(android:ration)除以運行角度差(android:toDegrees-android:fromDegrees),比如android:ration為1000,android:toDegrees為360,android:fromDegrees為0就表示1秒轉1圈。

c. 循環運行
Java代碼
android:fromDegrees="0"
android:toDegrees="360"
android:repeatCount="-1"
android:repeatCount="-1"即表示循環運行,配合上android:fromDegrees="0" android:toDegrees="360"表示不間斷

3、開始和停止旋轉
在操作開始之前調用
Java代碼
if (operatingAnim != null) {
infoOperatingIV.startAnimation(operatingAnim);
}
在操作完成時調用
Java代碼
infoOperatingIV.clearAnimation();
許多朋友不知道如何停止旋轉animation,所以強制設置rotate轉動多少圈表示操作,但卻無法與操作實際的進度匹配上,實際上只要如上代碼所示清除animation即可。

閱讀全文

與android圓形旋轉菜單相關的資料

熱點內容
歐拉app怎麼下訂單 瀏覽:422
肉文有聲小說 瀏覽:955
求個看片的網址 瀏覽:547
pythonsin函數圖像 瀏覽:329
身體不好當程序員 瀏覽:274
mount命令作用 瀏覽:220
畫江湖之不良人黑白無常雙修刪減 瀏覽:754
朵唯手機如何加密 瀏覽:504
安卓雙清指的什麼 瀏覽:177
phpredis所有keys 瀏覽:988
朋友賣房要解壓嗎 瀏覽:108
sar命令安裝 瀏覽:169
安卓怎麼看我自己去過哪裡 瀏覽:283
演算法分析里log沒有底數嗎 瀏覽:222
伺服器卡頓怎麼連接 瀏覽:957
手機拍照文件夾自動生成 瀏覽:788
瀏覽器如何運行在伺服器端 瀏覽:790
collinux 瀏覽:449
日本歐美韓國推理片電影大分享 瀏覽:615
怎麼下載香港app游戲 瀏覽:217