2016-06-21 9 views
0

Ich benutze this link, um ImageView zu formen, aber es akzeptiert nur die Form, die ich von drawable in xml genommen habe, und es kann scheinen, es programmatisch zu ändern?Bild von PorterShapeImageView programmatisch ändern?

Dies ist der Code

<com.pmb.pipcamera.activities.PorterShapeImageView 
      android:id="@+id/iv_effect_main" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:scaleType="fitXY" 
      app:siShape="@drawable/pip1_overlay" 
      app:siSquare="false" /> 

Antwort

0

Nun, die PorterShapeImageView ein Nachkomme des Standard android.widget.ImageView ist, so Sie in der Lage sein sollten, indem Sie eine der ImageView Methoden, um das Bild zu ändern:

mPorterShapeImageView.setImageBitmap(mBitmap); 

mPorterShapeImageView.setImageDrawable(mDrawable); 

mPorterShapeImageView.setImageIcon(mIcon); 

mPorterShapeImageView.setImageResource(R.drawable.new_image); 

mPorterShapeImageView.setImageURI(mUri); 
+0

Ich habe dieses versucht, aber kein Glück Drawable d1 = neu BitmapDrawable (getResources(), bitmap_main); iv_effect_main.setImageDrawable (d1); – user6428778

+0

@ user6428778 Huh, das ist seltsam. Ich habe diese Bibliothek noch nie benutzt, aber es sieht nicht so aus, als würde es irgendetwas von 'ImageView' außer Kraft setzen, was Sie daran hindern würde. Hast du irgendeine der anderen Methoden versucht? – Bryan

+0

@ user6428778 In dem Beispiel in der Bibliothek wird die Bibliothek [Picasso] (http://square.github.io/picasso/) von Square verwendet, um das Bild programmgesteuert festzulegen. 'Picasso' verwendet hierfür die' ImageView.setImageDrawable() 'Methode, so dass diese Methoden * funktionieren sollten. – Bryan