2014-09-15 1 views

답변

3

(UDI의 대답에 따라) 9- 패치 비트 맵은 아마 가장 쉬운 방법입니다,하지만 당신은 코드에서 수행하려는 경우, 사용자 정의 모양 생성 :

import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.graphics.drawable.shapes.Shape; 
import android.graphics.RectF; 

public class WeirdShape extends Shape { 
    private static final int COLOUR  = Color.RED; 
    private static final float STROKE_WIDTH = 1.0f; 
    private static final float CORNER = 10.0f; 

    private final Paint border = new Paint(); 
    private final Path path; 

    public WeirdShape() { 
     path = new Path(); 

     border.setColor  (COLOUR); 
     border.setStyle  (Paint.Style.STROKE); 
     border.setStrokeWidth(STROKE_WIDTH); 
     border.setAntiAlias (true); 
     border.setDither  (true); 
     border.setStrokeJoin (Paint.Join.ROUND); 
     border.setStrokeCap (Paint.Cap.ROUND); 
    } 

    @Override 
    protected void onResize(float width, float height) { 
     super.onResize(width, height); 

     float dx = STROKE_WIDTH/2.0f; 
     float dy = STROKE_WIDTH/2.0f; 
     float x = dx; 
     float y = dy; 
     float w = width - dx; 
     float h = height - dy; 

     RectF arc = new RectF(x,h-2*CORNER,x+2*CORNER,h); 

     path.reset(); 
     path.moveTo(x + CORNER,y); 
     path.lineTo(w - CORNER,y); 
     path.lineTo(w,y + CORNER); 
     path.lineTo(w, h); 
     path.lineTo(x + CORNER,h); 
     path.arcTo (arc,90.0f,90.0f); 
     path.lineTo(dx,h - CORNER); 
     path.lineTo(dx,y + CORNER); 
     path.close(); 
    } 

    @Override 
    public void draw(Canvas canvas, Paint paint) { 
     canvas.drawPath(path,border); 
    } 
} 

을 다음 사용자 지정을 사용

view.setBackground(new ShapeDrawable(new WeirdShape())); 

과 같이 보입니다 :

을 그리기 배경으로 쉐이프의 모양

+0

두 가지보기가 있습니다. 하나는 배경보기이고 다른 하나는 forground보기입니다. 배경보기가 그 구석에서 볼 수 있도록 전경보기의 한 모서리를 자르고 싶습니다. 내보기에 코드를 적용했습니다. 배경색을 설정할 수있는 방법은 무엇입니까? 당신이 만든 모양을 만들 수 있습니까? 그리고 어떻게 내가 cutted 모서리의 길이를 늘릴 수 있습니까? –

+0

Paint.Style.STROKE를 Paint.Style.FILL_AND_STROKE로 변경하면 이미지가 채워지고 CORNER 상수는 모서리의 길이를 설정합니다. 그것이 원하는 것이 아니라면 새로운 질문을 게시해야합니다. – tonys

-1

나는 측면이 제대로 및 PNG 당김

당신이 제안처럼 사각형의 모서리를 절단 ShapeDrawables에는 시설이 없습니다
+0

답장을 보내 주셔서 감사합니다. 이 셰이프를 다른 셰이프와 통합해야하며 이미 셰이프에 대한 코드가 있습니다. 그래서 나는 png 사용을 피하고 싶습니다. – MobileAppDeveloper

1

로 사용하기 위해 사용 포토샵을 말할 것입니다. '반경'구성 요소가 있습니다.

여러 이미지를 만들어 레이어 된 드로어 블을 사용하여 서로 쌓을 수도 있지만 복잡 할 수 있으며 오버 드로가 발생할 수 있습니다 (드로잉 성능이 좋지 않음).

또 다른 대안은 페인트 API를 사용하여 원하는 이미지를 생성 한 다음 캐시하여 사용할 수 있도록하는 것입니다.

0
put this in drawable like rounded_edittext.xml --> 

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" android:padding="10dp"> 
    <solid android:color="#FFFFFF"/> 
     <corners 
     android:bottomRightRadius="0dp" 
     android:bottomLeftRadius="15dp" 
     android:topLeftRadius="10dp" 
     android:topRightRadius="5dp"/> 
    </shape> 


call drawable as edittext background 
    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
    <EditText 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:background="@drawable/rounded_edittext" /> 
    </LinearLayout>