如何坚持自定义Android View的状态?

时间:2015-03-07 17:35:30

标签: android android-view multi-touch

我想操纵我刚刚发现的库来拖动/旋转和捏缩放图像。我使用两个来源:

- 库本身:MultiTouchController.java https://code.google.com/p/android-multitouch-controller/source/browse/MTController/src/org/metalev/multitouch/controller/MultiTouchController.java

- 此库的实施:PhotoSortrView https://code.google.com/p/android-multitouch-controller/source/browse/MTPhotoSortr/src/org/metalev/multitouch/photosortr/PhotoSortrView.java

- 实现此源的Activity示例:

public class PhotoSortrActivity extends Activity {

    PhotoSortrView photoSorter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.setTitle(R.string.instructions);
            photoSorter = new PhotoSortrView(this);
            setContentView(photoSorter);
    }

    @Override
    protected void onResume() {
            super.onResume();
            photoSorter.loadImages(this);
    }

    @Override
    protected void onPause() {
            super.onPause();
            photoSorter.unloadImages();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                    photoSorter.trackballClicked();
                    return true;
            }
            return super.onKeyDown(keyCode, event);
    }

}

问题是当活动离开前景时,活动不记得图像的位置,我记得之后。更糟糕的是,每次调用Activity时都会随机设置图像。

如何让Activity记住图像的状态? (我的具体问题是它是一个自定义视图)

以下是我希望Activity记住的内容的示例,然后再次调用Activity后重置:  Here is an example of what I want the Activity to remember:

Here is the Activity after I recall it:

1 个答案:

答案 0 :(得分:0)

请参阅savedInstanceState中的onCreate()参数?您覆盖onSaveInstanceState()以设置一个记住您的活动状态的捆绑包,它会显示在onCreate()

现在,如果您的问题是:如何在不更改PhotoSortrView类的情况下保存活动状态;好吧,你不能。您必须向loadImages()添加一些状态参数,以便加载图像并设置当前图像,并可能更改unloadImages(),以便返回活动可以保存的某些状态信息。