天天看點

【自定義控件】練習:drawBitmap顯示長圖

長圖:

【自定義控件】練習:drawBitmap顯示長圖

效果:

【自定義控件】練習:drawBitmap顯示長圖

主要涉及:canvas.drawBitmap(Bitmap bitmap,Rect src,Rect dsc,Paint paint);

設計:使用drawBitmap 進行區域作畫,每一次畫長圖的一個item到界面上。

設計點選事件,點選一次進行圖檔的更新,顯示下一張圖檔,如果到最後一張,則重新開始顯示

計算得,圖檔的寬高,将控件的寬高設定為小圖檔的寬高。

主要代碼:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    int left = currentPic * width;
    int top = ;
    int right = (currentPic + ) * width;
    int bottom = width;
    //圖像選取
    Rect src = new Rect(left, top, right, bottom);
    RectF dsc = new RectF(, , width, height);

    canvas.drawBitmap(bitmap, src, dsc, null);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    //擷取圖檔的大小
    int picHeight = bitmap.getHeight();
    int picWidth = bitmap.getWidth();
    width = picWidth / totalPic;
    height = picHeight;
    setMeasuredDimension(width, height);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    int action = event.getAction();
    if (action == MotionEvent.ACTION_UP) {
        //處理點選事件
        if (currentPic == totalPic - ) {
            currentPic = -;
        }
        currentPic++;
        postInvalidate();
    }
    return true;
}
           

代碼:

https://github.com/WhatWeCan/customer_views/tree/master/drawBitmap

繼續閱讀