自定義SeekBar(ProgressBar實現SeekBar效果)去除兩邊間距
眾所周知,SeekBar作為安卓的常用控制元件之一,用來進行顯示進度,但是SeekBar本身兩邊會留出空隙,不管怎麼設定,進度條本身都不會與父佈局貼近,但是需求又偏偏要貼近貼近而且刻度圖示又不能少呢?不妨用ProgressBar來做吧,記下來備用~~
public class MatchSeekBar extends ProgressBar{
protected Paint mPaint;
protected int mRealWidth;
private int w;
public MatchSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint=new Paint();
}
@Override
protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setAntiAlias(true); //設定畫筆為無鋸齒
int oldRadius=getHeight()/2;
int radius=(int)(oldRadius-1.5);
w=mRealWidth-oldRadius*2;
float radio = getProgress() * 1.0f / getMax();
float progressPosX = (int) (w * radio);
canvas.translate(getPaddingLeft()+oldRadius, getHeight() / 2);
/**
* 先畫一個白色的圓
*/
Paint mPaint2=new Paint();
mPaint2.setColor(Color.WHITE);
canvas.drawCircle(progressPosX,0,radius,mPaint2);
/**
* 再畫一個圓環
* 這裡要注意的是圓與圓環的半徑都被減去1.5,這是為啥呢,
* 因為這裡半徑用到控制元件高度的一半,而圓環的的寬度是3,
* 那麼圓環就會有1.5被畫到控制元件外面去
*
*/
mPaint.setColor(Color.parseColor("#18BBB6")); //設定畫筆顏色
mPaint.setStrokeWidth((float) 3.0); //線寬
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(progressPosX,0,(int)radius,mPaint);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
mRealWidth = w - getPaddingRight() - getPaddingLeft();
Log.d("dake.xuan", "onSizeChanged: "+mRealWidth);
}
}
相關推薦
自定義SeekBar(ProgressBar實現SeekBar效果)去除兩邊間距
眾所周知,SeekBar作為安卓的常用控制元件之一,用來進行顯示進度,但是SeekBar本身兩邊會留出空隙,不管怎麼設定,進度條本身都不會與父佈局貼近,但是需求又偏偏要貼近貼近而且刻度圖示又不能少呢?不妨用ProgressBar來做吧,記下來備用~~ public cla
Android中的自定義註解(反射實現-執行時註解)
預備知識: Java註解基礎 Java反射原理 Java動態代理 一、佈局檔案的註解 我們在Android開發的時候,總是會寫到setContentView方法,為了避免每次都寫重複的程式碼,我們需要使用註解來代替我們做這個事情,只需要在類Activity上
自定義Spinner樣式以及實現hint效果
android中有個Spinner控制元件,也就是下拉控制元件。但是初始的樣式比較不好看,所以想著更改下樣式。這樣就不需要一直用EditText+popupwindow的方式來實現這種效果,會比較這種方式更簡單一些。我們來看下實現的效果: 1、正如網上所說
Android 自定義通訊錄(仿Ios反彈效果+模糊搜尋+檢視手機通訊錄+拉伸導航條)
現在很多手機APP都用到通訊錄功能,在通訊錄的基礎上新增好友,查詢好友,獲取哪些好友和自己在玩同一款APP,這就需要去獲取手機通訊好友資訊,並把這些資訊展示出來!這些就需要列表展示通訊錄好友。但發現Android手機的通訊錄效果比Ios效果差很多,
自定義監控(阿裏雲&zabbix)
阿裏雲監控 自定義監控 zabbix腳本監控 mysql監控 自定義監控(阿裏雲&zabbix)目前阿裏雲對25端口有限制,無法在阿裏雲上搭建郵件服務器發送告警郵件,如果需要郵件通知,可以采取下面方法:1.開同阿裏雲企業郵箱2.使用阿裏雲監控告警3.第三方zabbix自定義腳本監控一、
使用PHP生成二維碼支援自定義logo(致敬李明老師)
二維碼對於我們來說已經不陌生了,可以說是無處不在,購物、轉賬等很多場合都需要用到二維碼,我們平時大多數是在掃描二維碼,那麼二維碼如何生成呢?接下來介紹一下使用PHPqrCode生成二維碼並且可以嵌入自己的logo。PHPqrCode似乎很久不更新了,不支援自定義logo,並且在測試過程中還有一小點b
springboot自定義starter(protobuf-spring-boot-starter)
0.簡介(因為沒有想到合適的事例 所以就封一層protobuf) 官方命名:spring-boot-starter-{name} 比如spring-boot-starter-web 非官方命名:{name}-spring-boot-starter 比如mybatis-spring-b
android自定義相機(帶邊框和按鈕)
前兩個月專案要求不能呼叫系統的相機,那就只能用自定義的了,查了一些資料,自己再研究了一下,自定義的相機還是有點複雜的,佈局和程式碼中都要用到一個重要的SurfaceView。 一、建立佈局,佈局的背景框可以讓美工給出,這裡姑且就是一個藍色的邊框,然後下面有三個按鈕,我里布局檔案activit
SpringMVC總結之自定義註解(例:許可權註解)
目錄 1.前言 2.自定義一個註解 3. 定義一個相應的攔截器 4.在springMVC配置檔案中進行配置 5.在springMVC controller中使用例項 1.前言 在開發過程中,我們想給控制器的某些方法進行控制訪問許可權,或者我們需要做方法呼叫日誌記錄
golang在linux環境下自定義包(一招解決問題)
由於是go語言新手,有些簡單的問題處理起來有點困難。現在從go安裝到執行詳細地說起 關於go語言在linux環境下自定義包的問題困擾了我好大一會。 下面我就從前往後詳細地說一下解決方法,一招解決問題。 (I)linux下解決,從go安裝開始說起 命令安裝比直接在先下載golang
安卓自定義view(繼承現有的view)
之前給大家分享了自定義view之組合控制元件,今天呢,給大家分享一個繼續現有的控制元件,其實繼承現有的控制元件我們平時遇到的還是比較多的,如Edittext 、button都是繼承自TextView的,有時候我們寫個展示圓形圖片的控制元件也會選擇繼承現有的Image
QT5自定義介面(規則與不規則窗體)
1.宣告事件與變數protected: void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEv
使用VBA在EXCEL中插入圖片自定義函式(網路URL/本地URL)
Sub InsertPic(ByVal 圖片連結 As String, ByVal 插入圖片表名 As String, ByVal 插入圖片單元格地址 As String) On Error Resume Next Dim rng As Range
自定義圓形progressbar(包含進度動畫效果)
效果圖敬上:) attrs檔案: < resources> < declare-styleable name=”CircleProgressBarStyle”> <
自定義View(四) Graphics2D 實現動態效果
自定義動畫的動態包括兩個方面 讓動畫動起來 (這類動畫可以通過週期行重畫實現) 實現和使用者的互動 在繪圖的整個過程中,經常會使用到雙快取技術,這是一項挺重要的技術,,為什麼這麼說呢? 能提高繪圖的效率 實現繪圖的過程和結果分離 ⚠️ 理解和掌
IOS 自定義按鈕(代碼實現)+九宮格
uifont 排列 end uiview height iyu void rec name 在一些下載應用裏整個頁面都是按鈕,有好多好多,但是仔細觀察不難發現他們很有規律。就像下面一樣?? 很有規律的排列在屏幕上,那麽這需要我們怎麽去做能。 正如標題,我們需要了解兩個知
thinkphp 5.0如何實現自定義404(異常處理)頁面
錯誤頁 自定義異常 異常錯誤 錯誤 load php 錯誤信息 art 正常 404頁面是客戶端在瀏覽網頁時,由於服務器無法正常提供信息,或是服務器無法回應,且不知道原因所返回的頁面。404承載著用戶體驗與SEO優化的重任。404頁面通常為用戶訪問了網站上不存在或已刪除的
java實現自定義佇列(先進先出)
題目:java實現自定義佇列(先進先出) 主類: import java.util.LinkedList; public class Main { public static void main(String[] args) { DuiLie dl
實現自定義註解(程式碼篇)
第一:定義三個自定義的註解類 第二:建立一個實體 第三:建立一箇中間類 第四:測試 註解處理的基礎知識 方法1:<T extends Annotation> T getAnnotation(Class<T> annotationClass
關於資料序列化(4)自定義序列化的實現,支援常用集合框架
下面的示例很好的揭示瞭如何實現自定義序列化的方法。 支援byte, byte[], boolean, boolean[], int, int[], long, long[] ,double ,double[], String, String[], 以及Enum, List,Map兩種包