안드로이드 개발 질문/답변
(글 수 45,052)
구조는 아래와 같습니다.
splash ( 로딩화면 ) - 메인화면
이렇게 넘어가게 되어있습니다.
현재, 메인화면에는 탭메뉴 소스가 들어가 있습니다.
-----
로딩화면을 사용하지 않고, 바로 메인으로 넘기면 정상적으로 나옵니다.
하지만, 로딩화면을 거치면, 메인으로 넘어갈 시 나오긴 하데, 탭메뉴 상단 3 개의 탭이 나오질 않네요.
그리고, 현재시각과, 시계(다이얼) 이 같이 나와버리네요..ㅠㅠ
------
--------
main.xml 소스
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabHost
android:id="@+id/tabHost"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="64dip">
<AnalogClock
android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</AnalogClock>
<DigitalClock
android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</DigitalClock>
</FrameLayout>
</TabHost>
</LinearLayout>
-----
TabWidgetExActivity.java 소스
package com.splashview;
import android.app.Activity;
import android.os.Bundle;
import android.widget.AnalogClock;
import android.widget.TabHost;
public class TabWidgetExActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = (TabHost)findViewById(R.id.tabHost);
tabHost.setup();
TabHost.TabSpec spec = tabHost.newTabSpec("tag1");
spec.setContent(R.id.tab1);
spec.setIndicator("tab1");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tag2");
spec.setContent(R.id.tab2);
spec.setIndicator("tab2");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tag3");
spec.setContent(R.id.tab1);
spec.setIndicator("tab3",
this.getResources().getDrawable(R.drawable.icon));
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tag4");
spec.setContent(R.id.tab1);
spec.setIndicator(new AnalogClock(this));
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
로딩화면 소스
--------
SplashActivity.java 소스
package com.splashview;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class SplashActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
initialize();
}
private void initialize()
{
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
finish();
}
};
handler.sendEmptyMessageDelayed(0, 3000);
}
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
initialize();
}
private void initialize()
{
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
finish();
}
};
handler.sendEmptyMessageDelayed(0, 3000);
}
}
-----
SplashView 소스
package com.splashview;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.content.Intent;
import android.os.Bundle;
public class SplashView extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Splash(로딩화면) 띄우기
startActivity(new Intent(this, SplashActivity.class));
// do_something();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Splash(로딩화면) 띄우기
startActivity(new Intent(this, SplashActivity.class));
// do_something();
}
}
splash.xml 소스
---------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/splash"
android:scaleType="fitXY"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/splash"
android:scaleType="fitXY"
/>
</LinearLayout>
------
AndroidManifest.xml 소스
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.splashview"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.splashview"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SplashView"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SplashActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar"
/>
<activity android:name=".SplashView"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SplashActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar"
/>
<activity android:name="SplashActivity"/>
</application>
</manifest>
</manifest>
당연하지 않나요?
탭 호스트에 탭을 추가 하는 부분이 SplashView 액티비티에는 없는데요.
그러니 탭이 안나오고 그 안에 내용인 아날로그 시계와 디지털 시계가 나오겠죠.
정작 탭을 만들어 추가하는 소스는 TabWidgetExActivity 에 있네요.