2016-08-22 2 views
1

Ich habe xml Gradient ziehbar Ressourcendatei hier:Set Imageview Vordergrund Farbverlauf programmatisch

Datei: fg_graidient

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > 
    <gradient 
     android:type="linear" 
     android:centerX="0%" 
     android:startColor="#00020321" 
     android:centerColor="#F2000000" 
     android:endColor="#B2020321" 
     android:angle="45"/> 
</shape> 

kann ich die Imageview Vordergrund wie unten:

<ImageView 
      android:id="@+id/backimg" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:scaleType="fitXY" 
      android:foreground="@drawable/fg_graidient" 
      /> 

Aber Ich möchte diesen kachelbaren Vordergrund für die Bildansicht programmgesteuert festlegen. Ist es möglich?

+0

überprüfen meine Antwort –

Antwort

1

Versuchen Sie, diese snipet:

ImageView img = (ImageView)findViewById(R.id.backimg); 
     img.setImageResource(R.drawable.fg_graidient); 
+0

img.setImageResource wird mein Imageview ersetzen, anstatt Gradienten die der Zugabe Bildhintergrund oder Vordergrund, so ist es absolut falsch –

2

erstellen programmatisch Verlaufsformen

ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() { 
    @Override 
    public Shader resize(int width, int height) { 
     LinearGradient lg = new LinearGradient(0, 0, width, height, 
      new int[]{Color.GREEN, Color.GREEN, Color.WHITE, Color.WHITE}, 
      new float[]{0,0.5f,.55f,1}, Shader.TileMode.REPEAT); 
     return lg; 
    } 
}; 

PaintDrawable p=new PaintDrawable(); 
p.setShape(new RectShape()); 
p.setShaderFactory(sf); 

Verwendung

Button btn= (Button)findViewById(R.id.btn); 
btn.setBackgroundDrawable((Drawable)p); 
Verwandte Themen