Pregunta

Estoy atascado en un simple problema que me está volviendo loco. En las imágenes de superposición estándar Android MapView tiene una sombra dibujada por ellos automáticamente cuando se llama al método drawAt. Quiero volver a crear el mismo efecto de sombra, pero no estoy seguro de cómo hacer la versión de sombra de la imagen (que se dibuja por separado de la imagen principal) alinear correctamente con la imagen principal.

private static class SampleView extends View {
    private Drawable mDrawable;
    private int mMarkerXOffset;
    private int mMarkerYOffset;

    public SampleView(Context context) {
        super(context);

        mDrawable = context.getResources().getDrawable(R.drawable.icon); 
        mDrawable.setBounds(0, 0, mDrawable.getIntrinsicWidth(), mDrawable.getIntrinsicHeight()); 

        mMarkerXOffset = (mDrawable.getIntrinsicWidth() / 2);
        mMarkerYOffset = mDrawable.getIntrinsicHeight();
    }

    private void DrawNormalImg(Canvas canvas, int nX, int nY)  {   
        canvas.save(Canvas.MATRIX_SAVE_FLAG);   
        canvas.translate(nX, nY);   
        mDrawable.draw(canvas);   
        canvas.restore();   
    }   

    private void DrawShadowImg(Canvas canvas, int nX, int nY)  { 
        canvas.save(Canvas.MATRIX_SAVE_FLAG);

        mDrawable.setColorFilter(0x7f000000, PorterDuff.Mode.SRC_IN);   

        canvas.translate(nX,nY);   
        canvas.skew(-0.9F, 0.0F);   
        canvas.scale(1.0F, 0.5F);   

        mDrawable.draw(canvas);   
        mDrawable.clearColorFilter();   

        canvas.restore();   
    }  

    @Override protected void onDraw(Canvas canvas) {
        int nX = 100;   
        int nY = 50;   

        canvas.drawColor(Color.WHITE);

        DrawShadowImg(canvas, nX, nY);   
        DrawNormalImg(canvas, nX, nY);
    }
¿Fue útil?

Solución

Niza pregunta! Creo que la solución será sesgar la imagen como un paralelogramo. Considere una imagen de un alfiler mapa que se ve algo como esto:

..X..
.XXX.
..X..
..|..
..|..
..|..

¿Dónde. es la transparencia. Que se quiere desviar la imagen así por la sombra:

     ..X..
    .XXX.
   ..X..
  ..|..
 ..|..
..|..

Note la parte superior e inferior son la misma anchura que en la imagen original.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top