1

サーバーに接続しているとき(SIPアプリケーションを開発しているとき)に画像を表示したい。私はこれを作成しました(テキストビューと画像を使用してXMLファイル[connected.xml]を作成しました)が、FCがあります:

public void onRegistrationDone(String localProfileUri, long expiryTime) {
                        updateStatus("Registered to server.");
                        Log.d("SUCCEED","Registration DONE");
                        setContentView(R.layout.connected);
                      }

接続および切断時に画像を追加したい...この問題を解決するにはどうすればよいですか?どうもありがとうございます。

編集:XML:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

<TextView
  android:id="@+id/sipLabel"
  android:textSize="20sp"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"/>

<ViewFlipper
    android:id="@+id/flipper" 
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <RelativeLayout android:layout_width="fill_parent" 
        android:layout_height="fill_parent">


  <ImageView android:id="@+id/disconnected" android:src="@drawable/disconnected" android:layout_below="@id/sipLabel" 
  android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_weight="0.35" android:gravity="center"
    />
    </RelativeLayout>

    <RelativeLayout android:layout_width="fill_parent" 
        android:layout_height="fill_parent">


  <ImageView android:id="@+id/connected" android:src="@drawable/connected" android:layout_below="@id/sipLabel" 
  android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_weight="0.35" android:gravity="center"
    />
    </RelativeLayout>

</ViewFlipper>
</RelativeLayout>
4

2 に答える 2

1

setContentViewアクティビティ内のすべてをクリーンアップしたことが100%確実でない限り、1つのアクティビティで複数回呼び出すことはできません。
それでも、ユーザーは、同じアクティビティを開始しても、戻るボタンを押すと、待機しているものが表示されないという奇妙なことに気付く場合があります。

だからあなたはむしろ考えるべきです

  • ビューの可視性を変更して、ビューのさまざまな部分を表示/非表示にする、または
  • よりエレガントで簡単な解決策:を使用しViewFlipperます。

アップデート1
これが使用例ですViewFlipper
これらの行をレイアウトxmlに入れてください:

<ViewFlipper android:id="@+id/flipper" 
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <RelativeLayout android:layout_width="fill_parent" 
        android:layout_height="fill_parent">
        <!-- your first view comes here -->
    </RelativeLayout>
    <RelativeLayout android:layout_width="fill_parent" 
        android:layout_height="fill_parent">
        <!-- your second view comes here -->
    </RelativeLayout>
</ViewFlipper>

また、Javaコードで、ビューを変更する必要がある場合は、次のように記述します。

flipper = (ViewFlipper)findViewById(R.id.flipper);
flipper.showNext();

追加:フリッピングをアニメーション化できます。呼び出す前にinoutアニメーションを設定するだけです。または:flippershowNextshowPrevious

Animation inAnimation = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, +1.0f, 
        Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 0.0f, 
        Animation.RELATIVE_TO_PARENT, 0.0f);
inAnimation.setDuration(250);
inAnimation.setInterpolator(new AccelerateInterpolator());

Animation outAnimation = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, 
        Animation.RELATIVE_TO_PARENT, -1.0f,
        Animation.RELATIVE_TO_PARENT, 0.0f, 
        Animation.RELATIVE_TO_PARENT, 0.0f);
outAnimation.setDuration(250);
outAnimation.setInterpolator(new AccelerateInterpolator());

flipper = (ViewFlipper)findViewById(R.id.flipper);
flipper.setInAnimation(inAnimation);
flipper.setOutAnimation(outAnimation);
flipper.showNext();

アップデート2

ViewFlipperグローバルヘッダー付きのサンプル:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <TextView android:id="@+id/status_text" android:text="Status: "
        android:layout_width="fill_parent" android:layout_height="wrap_content" />
    <ViewFlipper android:id="@+id/flipper" android:layout_below="@id/status_text"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <RelativeLayout android:layout_width="fill_parent" 
            android:layout_height="fill_parent">
            <!-- your first view comes here without the status TextView -->
        </RelativeLayout>
        <RelativeLayout android:layout_width="fill_parent" 
            android:layout_height="fill_parent">
            <!-- your second view comes here -->
        </RelativeLayout>
    </ViewFlipper>
</RelativeLayout>
于 2011-04-30T14:49:13.617 に答える
0

おそらくスレッドの問題:UIの変更はアクティビティのメインループスレッドで発生する必要があります。http://developer.android.com/reference/android/os/Handler.htmlを見てください:

  1. アクティビティのハンドラーを作成します。
  2. 登録が完了したら、メッセージ(http://developer.android.com/reference/android/os/Message.html )を送信します。
  3. ハンドラーで、そのメッセージを受信し、UIを変更します。

それがどのように機能するか教えてください。

編集:メッセージリンクを修正しました

于 2011-04-30T14:46:27.987 に答える