Android 启动页另一种思维的启动页

启动页这个东西很简单,但是想做的完美却不容易要解决的有以下几点

1.启动不可以出现白屏与黑屏

2进入首页是否做到数据已加载完

第一种启动方式 不会出现白屏速度快

上代码

AndroidManifest.xml

 <activity
            android:name=".ui.activity.SplashActivity"
            android:theme="@style/AppTheme_FullScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
android:theme="@style/AppTheme_FullScreen"

在这里AppTheme_FullScreen设置启动图

   <style name="AppTheme_FullScreen" parent="AppTheme">
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowBackground">@mipmap/splash</item>
    </style>
Java代码
启动页SplashActivity
public class SplashActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

 
        Thread myThread = new Thread() {//创建子线程
            @Override
            public void run() {
                try {
                    sleep(1000);//使程序休眠一秒
       Intent intent = new Intent(SplashActivity.this, MainActivity.class);
        
                    startActivity(intent);
      finish();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        myThread.start();//启动线程
}
}

现在就完美实现无白屏的启动了

这种方法是现在大部分人适用的方案

第二种方案是我现在项目中遇到的问题,首页接口太多,启动页跳转到首页会出现数据加载中的白屏,我的解决方案是放弃启动页直接启动首页, 进入首页之后先展示启动图片,完成网络请求之后或者网络失败之后让启动图消失

上代码

布局代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <ImageView
        android:id="@+id/bg_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@drawable/splash" />

    <TextView
        android:gravity="center"
        android:textSize="39sp"
        android:text="首页数据"
        android:id="@+id/bucuo"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </TextView>
</LinearLayout>

首页代码

public class MainActivity extends AppCompatActivity {
       ImageView bg_view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main19);
        bg_view=findViewById(R.id.bg_view);

       //请求首页数据
        home_page_data();

    }

    private void home_page_data() {
        addDisposable(RetrofitService.getNetService()
                .getListOfMicroVideoCategories()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(response -> {
                    if (response.getStatusCode() == 200) {
                        //网络成功
                        bg_view.setVisibility(View.GONE);
                    } else {
                        showBindToast(response.getErrorInfo());
                    }
                }, throwable -> {
                  //网络失败
                    bg_view.setVisibility(View.GONE);

                }));
    }

    @Override
    protected void onResume() {

        super.onResume();

    }
}

搞定 这样就提现了启动页的价值,让启动时间去做网络数据加载 .

这也是我暂时的想法如果您有更好的想法可以分享给我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio实现面跳转有两种方式可以选择。一种是通过MainActivity跳转,另一种是通过RelativeLayout布局跳转。 首先,我们可以在布局文件activity_main.xml中设置RelativeLayout,用于显示面的内容。在这个布局中,可以添加各种视图组件,如TextView和Button。 第二步是在MainActivity.java文件中编写代码来实现面跳转。您可以使用Intent类来启动另一个Activity,并在需要传递参数时使用Bundle对象。以下是使用MainActivity跳转的示例代码: ```java // 导入需要的类 import android.content.Intent; import android.os.Bundle; public class MainActivity extends AppCompatActivity { // ... // 在某个事件触发时执行面跳转 public void goToSecondActivity() { // 创建Intent对象,指定当前Activity和目标Activity Intent intent = new Intent(MainActivity.this, SecondActivity.class); // 如果需要传递参数,可以使用Bundle对象进行传递 Bundle bundle = new Bundle(); bundle.putString("key", "value"); intent.putExtras(bundle); // 启动目标Activity startActivity(intent); } } ``` 请注意,这只是一个示例。根据您的具体需求,您可能需要做一些修改。 另一种实现面跳转的方式是通过RelativeLayout布局中的点击事件来实现。您可以在activity_main.xml文件中为Button添加onClick属性,并在MainActivity.java文件中编写对应的方法来处理点击事件。 ```java // 导入需要的类 import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { // ... // 在布局中定义的方法,用于处理点击事件 public void goToSecondActivity(View view) { // 创建Intent对象,指定当前Activity和目标Activity Intent intent = new Intent(MainActivity.this, SecondActivity.class); // 如果需要传递参数,可以使用Bundle对象进行传递 Bundle bundle = new Bundle(); bundle.putString("key", "value"); intent.putExtras(bundle); // 启动目标Activity startActivity(intent); } } ``` 请注意,这里的方法名和参数类型必须与布局文件中定义的onClick属性所指定的一致。 通过这两种方式,您可以在Android Studio中实现面跳转。具体选择哪种方式取决于您的需求和设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值