没有xml的java加载屏幕android studio

erhoui1w  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(312)

所以,我在android工作室制作游戏,而不是 android-layout 我正在使用 Java class 作为引擎和 contentView .

spaceInvadersEngine = new SpaceInvadersEngine(this, size.x, size.y);
    setContentView(spaceInvadersEngine);

现在,当我加载新的关卡时,我需要一些东西弹出,使屏幕在关卡加载所有数据之前不可点击(在我的脑海里,我有一个类似横幅的东西,它将出现在屏幕的中央)。但是,我没有 XML file 为了 spaceInvadersEngine 所以我不能举个例子 ImageView 在加载数据时可见。
你知道怎么做吗?

efzxgjgh

efzxgjgh1#

创建 imageView 并将可见性属性设置为 gone ,示例: yourImageView.setVisibility(View.GONE); 样品:

// Initialize a new ImageView widget
            ImageView iv = new ImageView(getApplicationContext());

            // Set an image for ImageView
            iv.setImageDrawable(getDrawable(R.drawable.animal));

            // set visibility to gone
            iv.setVisibility(View.GONE);

            // Finally, add the ImageView to your layout layout
            yourLayout.addView(iv);

需要一些东西弹出,使屏幕不可点击,直到水平加载所有数据,你可以使用asyntask类,它有3个方法第一 doInBackground 可以用来加载所有数据的。加载所有数据后,它会将返回值传递给另一个名为“onpostexecute”的方法,在方法上显示它后,可以使用该方法将imageview设置为再次隐藏 PreExecute 样品:

public class LoadImageViewWhileLoadData extends AsyncTask<Boolean,String,Boolean> {
    @Override
    protected void onPreExecute() {
        // show your imageView
        yourImageView.setVisibility = View.VISIBLE;
        super.onPreExecute();
    }

    @Override
    protected Boolean doInBackground(Boolean... booleans) {
        // your code that loads all data
        // must return value that pass to onPostExecute
        return null;
    }

    @Override
    protected void onProgressUpdate(String... values) {
        // you can use this method if you use progres bar instead of imageview
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(Boolean aBoolean) {

        // make it gone again.
        yourImageView.setVisibility = View.GONE;
        super.onPostExecute(aBoolean);
    }
}

相关问题