1

私のアプリでは、ピンチしてズームするために TouchImageView クラスを使用しています。私はxmlからそのクラスをインスタンス化しています。

<com.nspl.utility.TouchImageView
    android:id="@+id/imageViewDoc"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" />

TouchImageView は ImageView クラスを拡張します。

これで、setContentView() メソッドが呼び出されると、このクラスがインスタンス化されます。しかし、ある時点で、このクラスを復活させたいと思っています。どうすればこれを達成できますか。

4

1 に答える 1

0

このようなことを試しましたか?

public class TouchImageViewActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //What you're code might look like now
        TouchImageView img = (TouchImageView) findViewById(R.id.imageViewDoc);
        img.setImageResource(R.drawable.snoopy);
        img.setMaxZoom(4f);
    }

    //Method to initiate new instance of class
    public TouchImageView newTouchImageView (){
        return new TouchImageView (this); //This constructor should work
    }
}

LinearLayout と言う新しいインスタンスを追加する場合は、次のようにします。

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.image_list);
TouchImageView img = newTouchImageView ();
img.setImageResource(R.drawable.another_image);
img.setMaxZoom(4f);
linearLayout.addView (img);

古いビューを置き換えたい場合は、新しいビューを追加して、layoutParent.removeView(oldTouchImageView); を呼び出すだけです。

于 2013-09-27T13:46:46.837 に答える