2014-03-01 4 views
0

원형 이미지가 있습니다.이 원형 이미지는 선형 레이아웃 안에 있습니다. linearlayout이 원형이되기를 원하지만, 어떻게 linearlayout을 원형으로 만들 수 있습니까? 회귀 공간을 취하지 않고 원형 공간을 사용합니까?원형 선형 레이아웃 android

이 나를 위해 매우 중요하다, 원인뿐만 아니라

+0

후 한 스냅 원형 선형 레이아웃이 현실적으로 가능하다 생각하지만, u는하고 싶은 것을 더 설명하지 않는다 , 그리고 다른 접근법 (그것들을 겹치는 것과 같은)이 효과가있을 수 있습니다. –

+0

후 스냅 샷과

CircleDrawable circle = new CircleDrawable(bitmap,true); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) imageView.setBackground(circle); else imageView.setBackgroundDrawable(circle); 
Piyush

+1

의 원형 이미지 – NameSpace

답변

1

당신은 이미지 뷰에서 사용하는 원형 비트 맵을 만들 수있는 LinearLayout 인 옆에 묶여 원형 이미지 sthg에 원형 image..and와 sthg을 개발하고 이미지 주위에 흰색 선을 사용합니다.

그러면 RelativeLayout을 사용하여 이미지를 왼쪽의 다른 ui 요소에 놓을 수 있습니다.

http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/ 그것은 로맹 가이 (구글의 전 안드로이드 팀)에 의해 기록됩니다

는이 기능에 대한 매우 흥미로운 게시물이 있습니다.

다음과 같이 사용할 수 있습니다. 이 예제는 흰색 선이있는 원형 비트 맵을 만듭니다. 검은 선으로 흰색 선을 추가하여이를 변경할 수 있습니다.

public class CircleDrawable extends Drawable { 

    private final BitmapShader mBitmapShader; 
    private final Paint mPaint; 
    private Paint mWhitePaint; 
    int circleCenterX; 
    int circleCenterY; 
    int mRadus; 
    private boolean mUseStroke = false; 
    private int mStrokePadding = 0; 

    public CircleDrawable(Bitmap bitmap) { 

     mBitmapShader = new BitmapShader(bitmap, 
       Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 

     mPaint = new Paint(); 
     mPaint.setAntiAlias(true); 
     mPaint.setShader(mBitmapShader); 

    } 

    public CircleDrawable(Bitmap bitmap, boolean mUseStroke) { 
     this(bitmap); 

     if (mUseStroke) { 
      this.mUseStroke = true; 
      mStrokePadding = 4; 
      mWhitePaint = new Paint(); 
      mWhitePaint.setStyle(Paint.Style.FILL_AND_STROKE); 
      mWhitePaint.setStrokeWidth(0.75f); 
      mWhitePaint.setColor(Color.WHITE); 
     } 
    } 

    @Override 
    protected void onBoundsChange(Rect bounds) { 
     super.onBoundsChange(bounds); 
     circleCenterX = bounds.width()/2; 
     circleCenterY = bounds.height()/2; 

     if (bounds.width() >= bounds.height()) 
      mRadus = bounds.width()/2; 
     else 
      mRadus = bounds.height()/2; 
    } 

    @Override 
    public void draw(Canvas canvas) { 
     if (mUseStroke) { 
      canvas.drawCircle(circleCenterX, circleCenterY, mRadus, mWhitePaint); 
     } 
     canvas.drawCircle(circleCenterX, circleCenterY, mRadus - mStrokePadding, mPaint); 
    } 

    @Override 
    public int getOpacity() { 
     return PixelFormat.TRANSLUCENT; 
    } 

    @Override 
    public void setAlpha(int alpha) { 
     mPaint.setAlpha(alpha); 
    } 

    @Override 
    public void setColorFilter(ColorFilter cf) { 
     mPaint.setColorFilter(cf); 
    } 

    public boolean ismUseStroke() { 
     return mUseStroke; 
    } 

    public void setmUseStroke(boolean mUseStroke) { 
     this.mUseStroke = mUseStroke; 
    } 

} 

이 기능을 사용하려면

이미지
관련 문제