2010-12-31 16 views
12

3秒後にアクティビティのレイアウトを変更したい場合があります。ホ、私はそれをすることができますか? たとえば、アプリケーションはスプラッシュスクリーンで始まり、3秒間実行した後、自動的にレイアウトをアプリケーションの最初の画面レイアウトに切り替えます。これは同じ活動、どんなアイデアでも起こるはずですか? setContentView(R.xml.anotherxml)を呼び出すことによって、新しいXMLファイルをロードする実行可能を実行するために呼び出す -Androidのレイアウトを動的に変更する

おかげで

答えて

14

これは、xmlレイアウトを1つだけ使用して行いました。私はちょうどそれに私のイントロ画面を表す追加のRelativeLayoutを入れ、次にそれにfadeOut Animationを使い、.setVisibility(View.GONE)を呼び出します。

これは

<RelativeLayout 
     android:id="@+id/introLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
     android:background="#FFFFFF" 
    > 

     <ImageView 
     android:id="@+id/logoImg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:src="@drawable/logo"> 
     </ImageView> 
    </RelativeLayout> 

その後、私のmain.xmlレイアウトファイルの一部であり、私の活動の内側に私はこれがあります)あなたはstartAnimationを入れて3秒後に、この実行を作ることができる

introLayout = (RelativeLayout) findViewById(R.id.introLayout); 
Animation fadeOutAnim = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fadeout); 
introLayout.startAnimation(fadeOutAnim); 
introLayout.setVisibility(View.GONE); 

を( 、実行可能ファイルの中のsetVisibility、および前述のmarkusとしてのpostDelayed()の使用。このイントロのレイアウトが画面に表示されている間に作業を行うことを検討してください。そのため、ユーザーの3秒間の遅延だけではありません。アプリケーションの実行中のバージョンが現在のバージョンであるかどうかを確認してください。

EDIT: あなたは(それが存在しない場合はアニメーションのディレクトリを作成します)/res/anim/にfadout.xmlファイルを追加する必要があります。ここに例があります。

fadeout.xml

<?xml version="1.0" encoding="utf-8"?> 

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="700" 
     android:fillAfter="true"/> 
+0

これはスマートな解決策です! – Sana

+0

'R.anim.'の' .anim.'はどこに行きますか? 'animは解決できないか、フィールドではない' – Alex

+1

@ w0rldart fadeout.xmlを '/ res/anim /'フォルダに追加する必要があります。私の編集を参照してください。 – FoamyGuy

2

多分あなたはpostDelayed()を使用することができます。

3

ViewSwitcherを使用するだけで、これはsetContentViewを実行することなくアプリケーション内の任意の数のレイアウトを切り替えることができます。

1

これはViewSwitcher自体は2レイアウト/ビューを切り替えることができるだけであることを、adnoridのポストに追加する私を残します。これは、単に私が知る限り、より深い意味を持たない2つのレイアウト/ビューにハードコードされているからです。だから私は自分のMultipleViewSwitcher MVSを構築し、元のViewSwitcher.javaをアンドロイドソースからベースにしています。作らなければならなかった唯一の変更点は次のとおりです。

  1. ビューの任意の数のダイナミックなハンドリングにハードコード自身
    • ブールmFirstTimeと
    • int型mWhichChild
  2. 正しいとMVSを提供します機能内
    • addView(...)
    • getNextView()
    • リセット()

これは、すべて一人でMultipleViewSwitcher.javaで行われ、魔法のように動作することができます。

私は、アンドロイドのソースを、何度も、より多くの時間、素早く簡単に編集できるようなものがたくさん出てきました。私はそれがなぜあるのか知りたいですが、ここはこのスレッドではありません。

乾杯!

関連する問題