簡體   English   中英

如何在方向更改時保留幻燈片的特定文本?

[英]How can I retain the particular text of a slide on orientation change?

我的應用程序中有一個幻燈片,每張幻燈片都有一些文本。 文字和圖像是動態的。 如何在方向更改時保留特定幻燈片的文本,以便在方向更改后視圖保持不變。我基本上想知道更改方向的幻燈片編號或索引。

我正在做的事情如下:

@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;
                    }

                }
  ... }

我在哪里錯過了鏡頭,請告訴我。 任何幫助表示贊賞。

您需要在您的活動中覆蓋“onConfigurationChanged”function 並使活動能夠處理清單中的更改。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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM