J'essayais d'obtenir des graphiques 2D sous Android. A titre d'exemple que je veux mettre en œuvre un drawable personnalisé et le montrer dans mon activitéMise en œuvre d'un dessin personnalisable dans Android
J'ai défini une drawable personnalisée en étendant à partir d'Android drawable comme mentionné ci-dessous
class myDrawable extends Drawable {
private static final String TAG = myDrawable.class.getSimpleName();
private ColorFilter cf;
@Override
public void draw(Canvas canvas) {
//First you define a colour for the outline of your rectangle
Paint rectanglePaint = new Paint();
rectanglePaint.setARGB(255, 255, 0, 0);
rectanglePaint.setStrokeWidth(2);
rectanglePaint.setStyle(Style.FILL);
//Then create yourself a Rectangle
RectF rectangle = new RectF(15.0f, 50.0f, 55.0f, 75.0f); //in pixels
Log.d(TAG,"On Draw method");
// TODO Auto-generated method stub
Paint paintHandl = new Paint();
// paintHandl.setColor(0xaabbcc);
paintHandl.setARGB(125, 234, 213, 34);
RectF rectObj = new RectF(5,5,25,25);
canvas.drawRoundRect(rectangle, 0.5f, 0.5f, rectanglePaint);
}
@Override
public int getOpacity() {
// TODO Auto-generated method stub
return 100;
}
@Override
public void setAlpha(int alpha) {
// TODO Auto-generated method stub
}
@Override
public void setColorFilter(ColorFilter cf) {
// TODO Auto-generated method stub
this.cf = cf;
}
}
Je suis en train d'obtenir ce affiché dans mon activité, comme indiqué ci-dessous
public class custDrawable extends Activity {
/** Called when the activity is first created. */
LinearLayout layObj = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layObj = (LinearLayout) findViewById(R.id.parentLay);
ImageView imageView = (ImageView) findViewById(R.id.icon2);
myDrawable myDrawObj = new myDrawable();
imageView.setImageDrawable(myDrawObj);
imageView.invalidate();
// layObj.addView(myDrawObj, params);
}
}
Mais quand je lance l'application je ne vois pas rectangle sur l'activité, quelqu'un peut me aider? Où vais-je mal?
J'ai fait les changements mentionné par Casey, mais je ne suis toujours pas en mesure de voir des choses valables dessinées sur mon point de vue. – Girish
Un autre problème est qu'il semble que vous n'ajoutez jamais le 'ImageView' à votre' LinearLayout'. Vous devez ajouter 'layObj.addView (imageView);' à la fin de 'onCreate()' – CaseyB
J'ai ajouté l'imageView à la disposition linéaire, c'est fondamentalement un problème avec les limites en xml, j'ai codé en dur la largeur et la hauteur de la vue de l'image, maintenant il apparaît, donc un problème avec mon setBounds est-il? – Girish