#android #xml
#Android #xml
Вопрос:
Я пытаюсь создать заставку. Я добавил фоновое изображение в XML-файл заставки. Размер фонового изображения составляет всего 382 КБ. но он не отображается. Но в предварительном просмотре он показывает мне изображение.
Вот файл xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back_ground"
tools:context="com.wisaver.app.updated.activities.SplashSecond">
</RelativeLayout>
еще один всплеск xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back_ground_2"
tools:context=".updated.activities.SplashActivity">
<!--<ImageView
android:id="@ id/ic_splash"
android:layout_gravity="center"
android:background="@drawable/back_ground_2"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />-->
<ImageView
android:id="@ id/iv_splash"
android:layout_gravity="center"
android:background="@drawable/logo"
android:layout_width="300sp"
android:layout_height="140dp" />
</FrameLayout>
Манифест
<activity
android:name=".updated.activities.SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".updated.activities.SplashSecond"
android:screenOrientation="portrait" />
Я тестирую его на Nexus 5. Я разрабатываю приложение с buildToolsVersion 24.0.0. Как заставить это работать? Некоторая помощь здесь приветствуется.
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Thread th=new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
startActivity(new Intent(SplashActivity.this,SplashSecond.class));
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
th.start();
}
}
Вот еще один
public class SplashSecond extends AppCompatActivity {
//boolean letGo=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_second);
Thread th=new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(400);
startActivity(new Intent(SplashSecond.this,ConsumerRetailerActivity.class));
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
Комментарии:
1. это должно сработать.
2. Точно, это должно работать, но это не так: (
3. можете ли вы опубликовать свой код SplashActivity?
4. опубликуйте все, включая выходные данные, а также попробуйте это на других устройствах с более низкой версией
5. Показать
SplashActivity
код ….. Просто совет, если вы используете Android Studio, сначала очистите проект, а затем попробуйте его перестроить. Иногда он не компилирует свежие изменения в проекте.
Ответ №1:
Измените свой Thread
код в обоих действиях следующим образом:
new Thread() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
myhandler.post(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashActivity.this, SplashSecond.class));
finish();
}
});
}
}.start();
или вы также можете попробовать следующий код:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
startActivity(new Intent(SplashActivity.this, SplashSecond.class));
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
Ответ №2:
Самый простой способ отображения заставки.
1. создайте activity_splash.xml
в res/layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@ id/imgSplash"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"/>
</LinearLayout>
2. добавьте приведенный ниже код в SplashActivity.java
класс
public class SplashActivity extends AppCompatActivity implements Runnable {
private static int SPLASH_DELAY = 2000; //miliseconds
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
ImageView imgSplash = (ImageView) findViewById(R.id.imgSplash);
//set your image
imgSplash.setImageResource(R.mipmap.ic_launcher);
Handler handler = new Handler(getMainLooper());
handler.postDelayed(this,SPLASH_DELAY);
}
@Override
public void run() {
startActivity(new Intent(this,MainActivity.class));
finish();
}
}
3. изменение AndroidManifest.xml
между <application>...</application>
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity">
</activity>
Ответ №3:
Пожалуйста, используйте изображение с низким разрешением вместо высокого разрешения, потому что иногда загрузка занимает много времени, а значит, ваш экран исчезнет из-за таймера