【问题标题】:How to persist the state of a custom Android View?如何保持自定义 Android 视图的状态?
【发布时间】:2015-03-07 17:35:30
【问题描述】:

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

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

-这个库的一个实现:PhotoSortrViewhttps://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 在再次调用后所做的重置:

【问题讨论】:

  • 最好发截图,上传图片到某处广告放链接
  • @Apurva 我添加了一些截图。

标签: android android-view multi-touch


【解决方案1】:

看到onCreate() 中的savedInstanceState 参数了吗?您覆盖 onSaveInstanceState() 以设置一个可以记住您的 Activity 状态的包,它会显示在 onCreate() 中。

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

【讨论】:

  • 我不明白,我可以通过覆盖 onSaveInstanceState() 来做我想做的事,还是我必须在 PhotoSortrView 类中进行覆盖和一些更改?
  • 由于 PhotoSortrView 的接口在加载图像后没有提供任何设置图像的方法,因此您必须对 PhotoSortrView 进行一些更改以在 PhotoSortrView 和Activity,以及覆盖 onSaveInstanceState()。
猜你喜欢
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
相关资源
最近更新 更多