我的应用中有一个幻灯片,一些文字与每张幻灯片相关联。文字和图像是动态的。如何在方向更改时保留特定幻灯片的文本,以便在方向更改后视图保持不变。我基本上想知道方向更改的幻灯片编号或索引。
我在做的事情如下:
@Override
public Object onRetainNonConfigurationInstance() {
ArrayList<Object> objList = new ArrayList<Object>();
Bitmap bitmapList[] = null;
String data = "";
try {
bitmapList = new Bitmap[slides.size()];
Log.e("ON", "onRetainNonConfigurationInstance() ");
if (gallery != null) {
for (int i = 0; i < imgViews.length; i++) {
LoaderImageView loaderImageView = imgViews[i];
if (loaderImageView != null) {
Bitmap bitmap = loaderImageView.getImageBitmap();
data = slides.get(i).getBody();
//System.out.println("the body text is: " + data);
if (bitmap != null) {
bitmapList[i] = new BitmapDrawable(bitmap).getBitmap();
}
}
}
}
objList.add(bitmapList);
objList.add(isDisplayingText);
objList.add(data);
} catch (Exception e) {
Log.e("Exception ", "LargeSlideShow.onRetain Message = " + e.toString());
} catch (Error e) {
Log.e("Error ", "LargeSlideShow.onRetain Message = " + e.toString());
}
return objList;
}
并在onCreate中这样做:
onCreate()
{ ...
ArrayList<Object> obj1 = (ArrayList<Object>) getLastNonConfigurationInstance();
if (obj1 != null) {
bitmaps = (Bitmap[]) obj1.get(0);
boolean isText = (Boolean) obj1.get(1);
String data = (String) obj1.get(2);
System.out.println("The Text received in on Create is: " + data);
if (isText == true) {
int vis = disText.getVisibility();
if (vis == View.GONE) {
String formattedBody = makeFormattedBody(data);
webView.loadData(formattedBody, "webView/html", "utf-8");
disText.setVisibility(View.VISIBLE);
disText.startAnimation(animShow);
isDisplayingText = true;
} else if (vis == View.VISIBLE) {
disText.startAnimation(animHide);
disText.setVisibility(View.GONE);
isDisplayingText = false;
}
}
... }
我在哪里错过了镜头,请告诉我。任何帮助表示赞赏。
答案 0 :(得分:1)
您需要覆盖活动中的“onConfigurationChanged”功能,并启用活动来处理manifest.xml中的更改:
<activity android:name=".SlideView" android:configChanges="orientation"> </activity>
然后你可以再次设置你的视图:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.oneSlide);
setUpView(); // configure the view e.g. add the picture and the text
}