前言
最近接到乙個需求,第一眼看到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...