自定義view,可拖拽進度和吸附效果的圓形進度條

2021-08-20 01:55:36 字數 1751 閱讀 8349

前言

最近接到乙個需求,第一眼看到ui互動效果時,瞬間想對產品小哥說「尼瑪,這麼會玩,你咋不上天」。確認了具體互動細節,喝了兩口農夫三拳,開始了兩耳不聞窗外事,一心只想擼**的過程。

先上ui效果

說明:

下面是整個自定義view的**:

public class roundprogressview extends view 

public roundprogressview(context context, attributeset attrs)

public roundprogressview(context context, attributeset attrs, int defstyle)

private void init()

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

@override

protected void ondraw(canvas canvas)

@override

public boolean ontouchevent(motionevent event)

return true;

}private float getxbyprogress(int progress)

private float getybyprogress(int progress)

/*** 繪製進度標記

** @param x the x

* @param y the y

* @param up the up

*/private void drawprogress(float x, float y, boolean up)

setangle(math.round(degrees));

} else

invalidate();

}/**

* 設定圓弧的角度

** @param angle

*/private void setangle(int angle)

private void setprogressloca(int progress)

monprogresschangelistener.onprogresschange(getprogress(), getdistance());

}/**

* 獲取progress

** @return

*/public int getprogress()

/*** 獲取progress

** @return

*/public void setprogress(int progress)

/*** 獲取progress標記點到圓心的距離

** @return

*/private float getdistance()

public void setprogresschangelistener(onprogresschangelistener listener)

inte***ce onprogresschangelistener

private int dp2px(context context,float dpvalue)

}

自定義可拖拽view

我們知道view的繪製有三個重要的過程分別是measure,layout,draw.measure負責測量view的尺寸,layout負責定位view的位置,draw負責把view繪製到上。我們這就是通過layout重新定位view。public class custommoveview exten...

自定義view 進度條

廢話不多說先看效果圖 效果圖 原諒模擬器顯示的不好看,為了錄gif圖,只能用模擬器 乙個背景,乙個進度,乙個進度值顯示,進度條與文字顯示的高度是1 2,其中用到了drawroundrect用來畫帶圓角的矩形,空心與實心都是paint的屬性設定的,drawtext用來畫文字 注意點 1.進度條進度滿進...

Android 自定義View實現拖拽效果

先來看一下效果圖 簡單說一下實現步驟 1.建立乙個類繼承view 2.繪製出乙個小球 3.重寫ontouchevent,來根據手指放下,移動,抬起,來控制小球 4.直接在布局中引用 先貼一張圖看下view的座標系 下面就貼一下 最後會給出原始碼 public class customview ext...