JavascriptProva

sabato 8 ottobre 2016

Creazione di una shape su XML e a runtime.

Creiamo una shape in modo statico con XML e dinamico a runtime.

Creiamo una shape ovale blu, dapprima con XML quindi a runtime.

Commentiamo in abbondanza...
Ho questo, inizialmente:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

</shape> 
Dove specificare il tipo di shape?
Nello stesso tag shape.
Così:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

</shape> 


E' sufficiente tutto questo?
No: bisogna impostare il colore.
Iniziamo con il colore solido, ossia quello del riempimento, che si imposta con un tag a parte, solid.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#3355ff"/>

</shape> 
Ora che ci sembra sufficiente, possiamo far assumere al nostro Button questa shape come sfondo:
public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.button);
        //button.setBackground(getResources().getDrawable(R.drawable.ovale));

    }
}
Ho commentizzato la parte critica per confronto: in questo modo ottengo un button normale.



Ora scommentizzo:
public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.button);
        button.setBackground(getResources().getDrawable(R.drawable.ovale));

    }
}


Ora tentiamo di riprodurre questa shape a runtime.

Da quello che leggo sul forum, il codice per riprodurre la mia forma dovrebbe essere questo:
        ShapeDrawable sd=new ShapeDrawable(new OvalShape());
        sd.getPaint().setColor(0x3355ff);
e forse il codice per settare il background a questo drawable sarebbe questo:
button.setBackground(sd);
Ecco il codice completo:
public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.button);


        ShapeDrawable sd=new ShapeDrawable(new OvalShape());
        sd.getPaint().setColor(0xFF3355FF);
        button.setBackground(sd);

    }
}
Proviamo...



Perfetto!

Indirizzo del tutorial

Nessun commento:

Posta un commento