長圖:
效果:
主要涉及:canvas.drawBitmap(Bitmap bitmap,Rect src,Rect dsc,Paint paint); 設計:使用drawBitmap 進行區域作畫,每一次畫長圖的一個item到界面上。 設計點擊事件,點擊一次進行圖片的更新,顯示下一張圖片,如果到最后一張,則重新開始顯示 計算得,圖片的寬高,將控件的寬高設置為小圖片的寬高。
主要代碼:
@OverridePRotected void onDraw(Canvas canvas) { super.onDraw(canvas); int left = currentPic * width; int top = 0; int right = (currentPic + 1) * width; int bottom = width; //圖像選取 Rect src = new Rect(left, top, right, bottom); RectF dsc = new RectF(0, 0, width, height); canvas.drawBitmap(bitmap, src, dsc, null);}@Overrideprotected 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);}@Overridepublic boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_UP) { //處理點擊事件 if (currentPic == totalPic - 1) { currentPic = -1; } currentPic++; postInvalidate(); } return true;}代碼: https://github.com/WhatWeCan/customer_views/tree/master/drawBitmap
新聞熱點
疑難解答