1. 程式人生 > >自定義SeekBar(ProgressBar實現SeekBar效果)去除兩邊間距

自定義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);
    }
}

相關推薦

定義SeekBarProgressBar實現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定義starterprotobuf-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兩種包