当前位置: 首页 > 知识库问答 >
问题:

自定义加载微调器图标

麻茂材
2023-03-14

我使用下面的布局实现了一个加载微调器图标:

<RelativeLayout
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:layout_marginTop="50dp">

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        />

</RelativeLayout>

但这使用默认的Android微调器。我想用我从preloaders.net得到的加载图标来替换微调器,如下所示:

如何用此自定义微调器替换默认的Android微调器?

共有3个答案

穆俊哲
2023-03-14

我建议利用这个变体。老实说,你的微调器并没有那么酷,让它成为1比1。

如果你找不到正常的解决方案。你可以提出你的观点。

class DrawThread extends Thread{
    private boolean runFlag = false;
    private SurfaceHolder surfaceHolder;
    private Bitmap picture;
    private Matrix matrix;
    private long prevTime;

    public DrawThread(SurfaceHolder surfaceHolder, Resources resources){
        this.surfaceHolder = surfaceHolder;

        picture = BitmapFactory.decodeResource(resources, R.drawable.spinner);

        matrix = new Matrix();
        matrix.postScale(3.0f, 3.0f);
        matrix.postTranslate(100.0f, 100.0f);

        prevTime = System.currentTimeMillis();
    }

    public void setRunning(boolean run) {
        runFlag = run;
    }

    @Override
    public void run() {
        Canvas canvas;
        while (runFlag) {
            long now = System.currentTimeMillis();
            long elapsedTime = now - prevTime;
            if (elapsedTime > 30){
                prevTime = now;
                matrix.preRotate(2.0f, picture.getWidth() / 2, picture.getHeight() / 2);
            }
            canvas = null;
            try {
                canvas = surfaceHolder.lockCanvas(null);
                synchronized (surfaceHolder) {
                    canvas.drawColor(Color.BLACK);
                    canvas.drawBitmap(picture, matrix, null);
                }
            } 
            finally {
                if (canvas != null) {
                    surfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
}

public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
    private DrawThread drawThread;

    public MySurfaceView(Context context) {
        super(context);
        getHolder().addCallback(this);
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {   
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        drawThread = new DrawThread(getHolder(), getResources());
        drawThread.setRunning(true);
        drawThread.start();
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        boolean retry = true;
        drawThread.setRunning(false);
        while (retry) {
            try {
                drawThread.join();
                retry = false;
            } catch (InterruptedException e) {
            }
        }
    }
}
钮刚洁
2023-03-14

这是我在项目中使用的:

    <ProgressBar
        android:id="@+id/updateProgressBar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:drawingCacheQuality="high"
        android:indeterminateDuration="2000"
        android:indeterminateDrawable="@drawable/splash_spinner"
        />

只需用您的自定义图像覆盖不可终止的

丘飞
2023-03-14

如果你想让你的PNG图像旋转并充当一个进度条,你可以简单地创建一个rotate布局,然后在该布局上插入你的PNG

内部res-

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/pokeball"       <--Insert your image here
    android:fillAfter="false"
    android:fromDegrees="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:startOffset="0"
    android:toDegrees="718" />

之后,您可以插入您的rotate.xml到进度条,以便您的PNG文件能够旋转,您只需要保持它的可见性

<ProgressBar
    android:id="@+id/progress_bar"
    android:layout_width="16dp"
    android:layout_height="16dp"
    android:layout_margin="16dp"
    android:alpha="0.5"
    android:indeterminateDrawable="@drawable/rotate"
    android:visibility="gone"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
 类似资料:
  • 问题内容: 我有一个React应用,可以调用我的API,该API返回URL列表以用作imy图像src。 我用来显示图像加载时的加载微调组件。 我有一个变量来确定图像是否正在加载。 我无法弄清楚如何停止显示正在加载的微调器,并在它们全部加载后显示图像。 这是我的代码: Photos.jsx Photo.jsx 我尝试将我的最后一项用于,但是它永远不会被调用,因为由于仍然显示了微调框,所以它从未设置为

  • 我正在与Spring Boot一起使用JDBI。我遵循了本指南,这导致必须创建一个类:<code>JdbiConfig</code>,对于应用程序上下文中需要的每个dao,您必须添加: 我想知道Spring Boot是否有办法创建一个定制的处理器来创建beans并将它们放入应用程序上下文中。我有两个想法: 使用自定义注释注释DAO并编写一些东西来提取它们。我尝试过只是手动将这些注入到应用程序启动中

  • 本文向大家介绍java 类加载与自定义类加载器详解,包括了java 类加载与自定义类加载器详解的使用技巧和注意事项,需要的朋友参考一下 类加载 所有类加载器,都是ClassLoader的子类。 类加载器永远以.class运行的目录为准。 读取classpath根目录下的文件有以下几种方式: 1 在Java项目中可以通过以下方式获取classspath下的文件: 在Tomcat中tomcat又声明了

  • 我试图修改几个类的字节代码,这些类的打包jar文件不在类路径中-它们是在给定URL的运行时由自定义的加载的。我尝试使用和来拦截那些类,但失败了。类加载器是遗留项目的一部分,因此我无法直接对其进行更改。 代理可以很好地处理AppClassLoader“本地”加载的类,但只会忽略那些由自定义类加载器加载的类。 CustomClassLoader: 我的代理中使用的ClassFileTransforme

  • 问题内容: 我一直在尝试建立一个自定义的类加载器,该类加载器将拦截类以打印出哪些类正在加载到应用程序中。类加载器看起来像这样 它只是吐出它加载的所有类的名称。但是,当我尝试运行一些代码时, 通过 它打印出来 这似乎很奇怪。这不是一个简单的类,它取决于程序包中的许多其他类。这些类显然正在加载中,因为d python代码能够执行操作并读取我的文件。但是,由于某些原因,那些类并未由load的类加载器加载

  • 我的Spring启动应用程序有问题。它似乎不加载自定义css文件。我把它放在资源/静态/css下,我也尝试过在资源/公共/css下,但它也不起作用。 我把我的项目留在git hub帐户上,这样你就可以检查出什么问题了。 GitHub项目 另外,当我打开chrome控制台下的登录页面时,会出现一个警告 资源被解释为样式表,但使用 MIME 类型文本/纯文本传输:“http://localhost:8