2014-02-11 1 views
0

를 확인합니다. 아래 이미지는 내가 필요한 것의 예입니다.이미지 뷰 서브 클래스는, 나는이</p> <p><img src="https://i.stack.imgur.com/CiIAx.jpg" alt="enter image description here"><img src="https://i.stack.imgur.com/SjQD5.png" alt="enter image description here"></p> <p>같은 이미지를 촬영하고 이미지의 오른쪽 상단 1/4로를 설정하려고 둥근 마우스 오른쪽 코너

enter image description here

** UPDATE : **

나는 그것이 (일종의) 작업,하지만 이미지를 확장하는 것은 왜곡의 수용 할 수없는 양을 만들어 내 코드는 정말 비효율적 인 것 같다. 이 코드를 향상시키는 방법이나 가능한 더 나은 방법에 대한 아이디어가 있습니까?

enter image description here

나는 발리의 NetworkImageView의 서브 클래스입니다.

여기이 가장 간단한 방법입니다 내 코드

<com.RoundedNetworkImageView 
    android:id="@+id/smallProductImage" 
    android:layout_width="56dp" 
    android:layout_height="56dp" 
    android:layout_centerVertical="true" 
    android:layout_margin="5dp" 
    android:adjustViewBounds="true" 
    android:background="@android:color/white " 
    android:scaleType="fitCenter" /> 

public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) { 
    Bitmap sbmp; 

    if (bmp.getWidth() != radius || bmp.getHeight() != radius) { 
     float smallest = Math.min(bmp.getWidth(), bmp.getHeight()); 
     float factor = smallest/radius; 
     sbmp = Bitmap.createScaledBitmap(bmp, (int) (bmp.getWidth()/factor), (int) (bmp.getHeight()/factor), 
       false); 
    } else { 
     sbmp = bmp; 
    } 

    Bitmap output = Bitmap.createBitmap(radius, radius, Config.ARGB_8888); 
    Canvas canvas = new Canvas(output); 

    final int color = 0xffa19774; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, radius, radius); 

    paint.setAntiAlias(true); 
    paint.setFilterBitmap(true); 
    paint.setDither(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(Color.parseColor("#BAB399")); 
    canvas.drawCircle(radius/2 + 0.7f, radius/2 + 0.7f, radius/2 + 0.1f, paint); 
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
    canvas.drawBitmap(sbmp, rect, rect, paint); 

    Bitmap bitmap = Bitmap.createBitmap(output, output.getWidth()/2, 0, output.getWidth()/2, 
      output.getHeight()/2); 
    Bitmap scaledBmp = Bitmap.createScaledBitmap(bitmap, radius, radius, true); 

    return scaledBmp; 
} 
+0

왜 하위 클래스입니까? XML을 통해 동일한 것을 얻을 수 있습니다 – Sam

+0

xml을 사용하여 이미지를 자르고 반올림하는 방법은 무엇입니까? 나는 단순히 원을 그리려하지 않는다. – MCR

답변

0

확인하십시오. link. 그것은 당신이 찾고있는 것과 비슷한 많은 대답을 가지고 있으며 당신을 도울 것입니다. 행복한 코딩. :)

0

방법 다음 라이브러리에 대한 :

https://github.com/vinc3m1/RoundedImageView

?

+0

은 훌륭한 라이브러리처럼 보이지만 이미지의 오른쪽 상단 1/4까지 자르는 방법은 무엇입니까? 그것이 내가 고군분투하는 부분입니다. – MCR

+0

둥근 모서리를 사용자 정의하여 "RoundedDrawable"을 편집하고 "draw()"함수로 이동해야한다고 생각합니다. –

관련 문제

 관련 문제