JavascriptProva

martedì 28 giugno 2016

Modificare un Drawable programmaticamente

Voglio disegnare un cerchio potendo cambiandone il colore da Java.
Inizio a creare una Shape:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"> 
    <solid android:color="#AFF" />
    <stroke
        android:width="5dp"
        android:color="#faa" />
    

</shape>
E funziona.
Il problema è adesso modificare questo.
Dal momento che il codice xml per impostarlo come sfondo è:
 <View
     android:layout_width="100dp"
     android:layout_height="100dp"
     android:background="@drawable/provashape"/>
come mi regolo per trovare un tipo compatibile con questa shape?

Pur senza aver capito ancora la differenza che c'è fra GradientDrawable, ShapeDrawable, ColorDrawable eccetera, ho capito che questa shape è un tipo GradientDrawable.

Quindi posso scrivere questo codice, che mi permette di modificare il colore, lo stroke eccetera del mio Drawable.
public class MainActivity extends Activity 
 
 Button button;
 View view;
 GradientDrawable drawable;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  view=(View)findViewById(R.id.view1);
  drawable=(GradientDrawable)view.getBackground();
  
  
  
  button=(Button)findViewById(R.id.button1);
  
  
  button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    drawable.setStroke(20, Color.BLACK);
    
   }
  });
  

 }
}

Nessun commento:

Posta un commento