Dunque quelle elucubrazioni geometriche che ho messo in opera prima possono essere eliminate. Ho scelto la soluzione più complicata credendo che con un'immagine più complessa di "cartella" e non di semplice rettangolo ci sarebbero state complicazioni, e anche perché ero indeciso se fare un FILL o uno STROKE.
Opto per il FILL.
Ecco, dopo varie prove sono riuscito a realizzare l'immagine di una cartella con bordo grigio su sfondo nero:
MyLayout:
public class MyLayout extends LinearLayout { Paint paint; Context context; public MyLayout(Context context) { super(context); this.context=context; setWillNotDraw(false); paint = new Paint(); } @Override protected void onDraw(Canvas canvas){ int bw=10; super.onDraw(canvas); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.GRAY); //rettangolo principale canvas.drawRect(0,30,getWidth(),getHeight(),paint); //linguetta canvas.drawRect(0,0,90,100,paint); paint.setColor(Color.WHITE); //rettangolo principale interno canvas.drawRect(0+bw,30+bw,getWidth()-bw,getHeight()-bw,paint); //linguetta interna canvas.drawRect(0+bw,0+bw,90-bw,100,paint); } }
MainActivity:
public class MainActivity extends AppCompatActivity { RelativeLayout mainLayout; MyLayout myLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainLayout=(RelativeLayout)findViewById(R.id.mainLayout); myLayout=new MyLayout(this); mainLayout.addView(myLayout); RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.width=200; params.height=200; params.leftMargin=100; params.topMargin=100; myLayout.setLayoutParams(params); } }Sarebbe il caso di usare, nel codice di MyLayout, valori delle dimensioni dei rettangoli in percentuale, in modo da adattarsi automaticamente a ogni dimensione data al layout.
Si può consentire la scelta delle dimensioni del bordo volta per volta (e sarà meglio metterlo come parametro da passare al costruttore), mentre per le dimensioni relative della linguetta rispetto alla larghezza della pagina, andrebbe posto un valore percentuale.
Nessun commento:
Posta un commento