2015-12-22 42 views
-1

我重寫在Android上查看做一些自定義繪圖,但渲染的視圖質量不是很好,尤其是文本。我找到了幾個解決方案,但都沒有爲我工作。在這裏附上代碼。感謝您的任何幫助。Android自定義視圖繪製質量差

@Override 
    protected void onDraw(Canvas canvas) { 
     int width = canvas.getWidth(); 
     int height = canvas.getHeight(); 

     Point a = new Point(0, 0); 
     Point b = new Point(width/2, height); 
     Point c = new Point(width, 0); 

     Path trianglePath = new Path(); 
     trianglePath.moveTo(a.x, a.y); 
     trianglePath.lineTo(b.x, b.y); 
     trianglePath.lineTo(c.x, c.y); 
     trianglePath.lineTo(a.x, a.y); 

     Paint paint = new Paint(); 
     paint.setStrokeWidth(1); 
     paint.setColor(Color.parseColor("#7A7A7A")); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setAntiAlias(true); 

     canvas.drawPath(trianglePath, paint); 

     Paint textPaint = new Paint(); 
     textPaint.setStyle(Paint.Style.FILL); 
     textPaint.setColor(Color.WHITE); 
     textPaint.setTextSize(height/6); 
     textPaint.setTypeface(TypefaceUtils.getTypeface(getContext(), TypefaceUtils.AVAILABLE_FONTS.ROBOTO_THIN)); 

     String receive = getContext().getString(R.string.receive_password).split("\n")[0]; 
     String password = getContext().getString(R.string.receive_password).split("\n")[1]; 
     Rect receiveBounds = new Rect(); 
     Rect passwordBounds = new Rect(); 
     textPaint.getTextBounds(receive, 0, receive.length(), receiveBounds); 
     textPaint.getTextBounds(password, 0, password.length(), passwordBounds); 

     canvas.drawText(
       receive, 
       (width - receiveBounds.width())/2, 
       height/3 - receiveBounds.height() + receiveBounds.height()/5, 
       textPaint); 
     canvas.drawText(
       password, 
       (width - passwordBounds.width())/2, 
       height/3 + receiveBounds.height(), 
       textPaint); 

     canvas.scale(1, 1); 
    } 

回答

1

嘗試設置textpaint.setAntiAlias(true);

+0

是的,我也發現了這個屬性在一秒鐘前,和它的作品。不管怎樣,謝謝你。 –