Autore Topic: problema con Shader!  (Letto 525 volte)

Offline Marcox

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC wildfire
  • Sistema operativo:
    Windows XP
problema con Shader!
« il: 12 Ottobre 2012, 12:18:17 CEST »
0
salve a tutti
sapreste dirmi qual è l errore?continuo a ricevere nullpointexception...
Codice (Java): [Seleziona]
public class VortexView extends View{

        Paint myPaint;
        int z,f;
        int a,b,c,d;
        int x=180;
     int y=180;
     int r=100;
        float left=x-r;
        float right=x+r;
        float top= y-r;
        float bottom= y+r;
       
        Paint paint2;
        Paint paint3;
        RectF oval = new RectF(left,top,right,bottom);
        RectF oval2 = new RectF(left-10,top-10,right+10,bottom+10);
        int startangl2= -92;
        int sweepangl2=4;
int angl=0;



 Shader mShader1;
 Shader mShader2;

Bitmap texture;
Bitmap texture2;



        public VortexView(Context context, AttributeSet attrs) {
                super(context, attrs);
                // TODO Auto-generated constructor stub
                myPaint=new Paint();
            myPaint.setColor(Color.CYAN);  
           
            myPaint.setAntiAlias(true);
            paint2=new Paint();
            paint2.setColor(Color.RED);
            paint2.setAntiAlias(true);
            paint3=new Paint();
            paint3.setAntiAlias(true);
           
           
           
               texture = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.im_texture);
               mShader1 = new BitmapShader(texture, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
               Matrix m = new Matrix();
               m.setRotate(-30);
               mShader1.setLocalMatrix(m);


        // l'error log mi dice che qui sotto c'è l errore
                texture2= BitmapFactory.decodeResource(getContext().getResources(), R.drawable.it_texture);
                mShader2 = new BitmapShader(texture2, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
                Matrix m2 = new Matrix();
                m2.setRotate(120);
                mShader2.setLocalMatrix(m2);
           
        }


        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                // TODO Auto-generated method stub
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                int f = widthMeasureSpec;
                 setMeasuredDimension(f, f);
        }

        @Override
        protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                super.onDraw(canvas);
               
               
                myPaint.setShader(mShader2);
            paint3.setShader(mShader1);
                                                                 
               
                canvas.drawColor(Color.YELLOW);
                canvas.drawCircle(x, y, r+50,paint3);
               
                oval.set(left,top,right,bottom);
                 oval2.set(left-10,top-10,right+10,bottom+10);
                myPaint.setStyle(Paint.Style.FILL_AND_STROKE);
               
                canvas.drawCircle(x, y, r, myPaint);
                canvas.drawArc(oval,  -90, angl, true,   paint2);
                invalidate();
               
        }
       
}
il tutto funziona correttamente se al posto di usare come immagine  it_texture per mShader2, uso im_texture che è la stessa di mShader1
quindi ho provato a cambiare più immagini ma continua a non funzionare... :-(

Offline Marcox

  • Utente junior
  • **
  • Post: 56
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC wildfire
  • Sistema operativo:
    Windows XP
Re:problema con Shader!
« Risposta #1 il: 12 Ottobre 2012, 15:39:59 CEST »
0
provando ho scoperto che cambiando la versione dell emulatore ad android 3.0 funziona perfettamente... ma non riesco comunque a capire perchè non funziona sul 2.2....