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