0

同じ高さの垂直方向に10個にスライスしたい画像があるので、hdpiスライスの寸法は800 * 48(ランドスケープアプリケーション)です。動作しない次のコードがあります

public void convertBitmapinSlices(){
        Bitmap tempBitmap;
        try{
            Paint paint = new Paint();
            paint.setFilterBitmap(true);     
            tempBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img1); 
            int targetWidth  = (int) Methods.dpToPx(tempBitmap.getWidth(), this);
            Log.v("TARGET_WIDTH", Integer.toString(targetWidth));            
            int targetHeight = (int) (Methods.dpToPx(tempBitmap.getHeight(), this)/10);
            Log.v("TARGET_HEIGHT", Integer.toString(targetHeight));
            Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight,Bitmap.Config.ARGB_8888);
            RectF rectf = new RectF(0, 0, targetWidth, targetHeight);
            Canvas canvas = new Canvas(targetBitmap);
            Path path = new Path();
            path.addRect(rectf, Path.Direction.CW);
            canvas.clipPath(path);
            int starty=0;
            lLforGardenImages.removeAllViews();
           for(int i=1; i<=10;i++){
               Log.v("SRC-Height", Integer.toString(targetHeight*i));
               Log.v("START-Y", Integer.toString(starty));
                canvas.drawBitmap(tempBitmap, new Rect(0, starty, tempBitmap.getWidth(), (tempBitmap.getHeight()/10)+starty),
                                new Rect(0, 0, targetWidth,targetHeight), paint);
               // Matrix matrix = new Matrix();
               // matrix.postScale(1f, 1f);
                Bitmap resizedBitmap = Bitmap.createBitmap(targetBitmap, 0, 0, targetWidth, targetHeight, null, true);
                Log.v("Width after Resizing ", resizedBitmap.getWidth()+"");
                Log.v("Height  after Resizing ", resizedBitmap.getHeight()+""); 
                BitmapDrawable bd = new BitmapDrawable(resizedBitmap);
                ImageView iv = new ImageView(this);
                iv.setAdjustViewBounds(true);
                iv.setBackgroundDrawable(bd);
                lLforGardenImages.addView(iv, llayoutParams);
                if((i % 2) == 0){
                    iv.startAnimation(sliderAnimation(-1.0f,0.0f,0.0f,0.0f,1000));
                }else{
                    iv.startAnimation(sliderAnimation(1.0f,0.0f,0.0f,0.0f,1000));
                }
                starty= starty+targetHeight;
             }

        }
        catch(Exception e){
            System.out.println("Error1 : " + e.getMessage() + e.toString());
      }
}

私が間違っていることについて何か考えはありますか?

出力は、スライスが正しくなく、コンテンツの高さが小さいように見えますが、スライスの高さは正しい、つまり48で、幅も正しいというものです。したがって、上記のコードの唯一の問題は、スライスの高さが正しいにもかかわらず、コンテンツの高さが正しくないように見えることです。

4

0 に答える 0