2013-07-01 3 views
25

내 응용 프로그램에 대한 사용자 정의보기 구성 요소를 개발하고 그림자를 원에 추가하는 데 어려움을 겪고 있습니다. 여기 setShadowLayer Android API의 차이점

그러나
public class ChartView extends View { 


    public ChartView(Context context, AttributeSet attributeSet){ 
     super(context, attributeSet); 
     init(); 


    } 
    Paint paint; 
    public void init(){ 
     paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paint.setColor(Color.WHITE); 
     paint.setStyle(Paint.Style.FILL); 
     paint.setShadowLayer(30, 0, 0, Color.RED); 

    } 
    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawCircle(getWidth()/2, getHeight()/2,50, paint); 
    } 
} 

보기

을 확장 내 클래스의 코드, 나는 API에 따라 shadowLayer에 큰 영향이 있습니다 것으로 나타났습니다. 여기

<uses-sdk android:targetSdkVersion="13"/> 

enter image description here

과 출력 그리고 여기

<uses-sdk android:targetSdkVersion="14"/> //Higher target API yields the same output. 

enter image description here

와 출력이 원치 않는 행동을 극복하는 방법을 어떤 생각인가? 하드웨어 가속이 켜져있을 때

안부

답변

56

setShadowLayer()은 텍스트 만 지원됩니다. 하드웨어 가속은 targetSdk=14 이상일 때 기본적으로 설정됩니다. 쉬운 해결 방법은 뷰를 소프트웨어 계층에 넣는 것입니다 : myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null).

+0

감사합니다.이 작업은 즉시 완료되었습니다. 나는 안드로이드 문서에서 이것을 보지 못했고, 이것은 미래에 사람들을 도울 것입니다. –

+5

바로 여기에 문서가 있습니다 : http://developer.android.com/guide/topics/graphics/hardware-accel.html :)) –

+3

추가 정보를 제공해 주셔서 감사합니다. 나는 캔버스 문서를보고 있었다. 나에게 나빴다. –