Skip to content

Defina a página de carregamento da interface do usuário ​

1. Exibição de efeito ​

O SDK do applet PhizClip suporta a configuração personalizada de páginas de carregamento e páginas de erro. Entre eles:

  • Página de carregamento significa: ao lançar o applet, se o applet não estiver baixado no dispositivo, o contêiner do applet iniciará a página de carregamento para indicar ao usuário que aguarde, e quando o applet for instalado no dispositivo, a página de carregamento será fechada e o applet será iniciado. Quando os usuários abrem o applet pela primeira vez, ou após a atualização da versão do applet, a página de carregamento permanecerá relativamente por um tempo
  • A página de erro é a página exibida ao usuário quando o applet falha ao carregar ou gera outros erros desconhecidos.

O efeito visual específico pode ser visto na figura a seguir:

Carregamento de personalização-2.gif

2. Cobertura ​

Essa configuração é implementada pelo aplicativo. Você pode configurar a visualização da página de carregamento e da página de erro. Uma vez definida, todos os applets no aplicativo serão implementados de acordo com esse efeito

3. Método de configuração do iOS ​

3.1 Implementando páginas de carregamento personalizado ​

Para applets no iOS, o SDK oferece suporte aos desenvolvedores para personalizar o conteúdo da página de carregamento. Você pode configurá-lo da seguinte forma: 1.Modifique o estilo da página de carregamento na subclasse herdada de FATBaseLoadingView

Exemplos de código estão apresentados a seguir:

objc
@interface LoadingView : FATBaseLoadingView
@end
@implementation LoadingView
- (instancetype)initWithFrame:(CGRect)frame {
    if ([super initWithFrame:frame]) {
        self.backgroundColor = [UIColor greenColor];
        self.loadingView.padding = 20;
        self.loadingView.dotView.backgroundColor = [UIColor blackColor];
        self.loadingView.animation.duration = 5;
        self.titleLabel.textColor = [UIColor redColor];
    }
    return self;
}
@end

2.Defina a propriedade baseLoadingViewClass do objeto FATConfig com o nome da classe da página de carregamento personalizada.

objc
FATConfig *config = [FATConfig configWithStoreConfigs:storeConfigs];
config.baseLoadingViewClass = @ "LoadingView" ;
[[FATClient sharedClient] initWithConfig:config error:nil];

3.2 Implementando uma página de falha de carregamento personalizada ​

A implementação é semelhante à página de carregamento personalizada, os passos específicos são os seguintes: 1.Modificar o estilo da página de falha de carregamento na subclasse herdada de FATBaseLoadFailedView

objc
@interface LoadFailedView : FATBaseLoadFailedView
@end
@implementation LoadFailedView
- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.errorLabel.textColor = [UIColor redColor];
    }
    return self;
}
- (void)layoutSubviews {
    [super layoutSubviews];
    CGFloat bottom = self.fat_height;
    self.errorImageView.fat_bottom = bottom - 110;
    self.errorLabel.fat_top = self.errorImageView.fat_bottom + 30;
    self.detailLabel.fat_top = self.errorLabel.fat_bottom + 15;
}
@end

2.Configure a propriedade baseLoadingViewClass do objeto FATConfig com o nome da classe da página personalizada de falha de carregamento

objc
FATConfig *config = [FATConfig configWithStoreConfigs:storeConfigs];
config.baseLoadFailedViewClass = @ "LoadFailedView" ;
[[FATClient sharedClient] initWithConfig:config error:nil];

4. Método de configuração do Android ​

O SDK disponibiliza uma classe abstrata chamada IFinAppletLoadingPage, da qual os desenvolvedores podem herdar para implementar sua própria visualização de página de carregamento e página de falha, e configurar a classe de implementação durante a inicialização do SDK

4.1 Descrição do método abstrato IFinAppletLoadingPage ​

kotlin
/**
 * Layout ID of the applet in loading
 */
abstract fun getLoadingLayoutRes(): Int

/**
 * Layout ID for applet load failure
 */
abstract fun getFailureLayoutRes(): Int

/**
 * Applet load failure callback
 *
 * @param msg   Error message
 */
@Deprecated( "No more callbacks since version 2.36.3, please use onLoadingFailure(title: String, msg: String)" )
abstract fun onLoadingFailure(msg: String)

/**
 * Applet load failure callback
 *
 * @param title Wrong title
 * @param msg   Error message
 */
abstract fun onLoadingFailure(title: String, msg: String)

/**
 * Update the information about the applet, the parameters are the basic information of the applet, it will call back several times,
 * May be empty at the initial callback (e.g. the applet is launched for the first time and basic information has not been downloaded),
 * Developers are required to perform their own nulling.
 *
 * @param appTitle      app name
 * @param appAvatarUrl  app icon link
 */
abstract fun onUpdate(appTitle: String, appAvatarUrl: String)

Esta classe fornece duas instâncias de layout:

  • FailureLayout

    O layout do arquivo da página de erro retornado pelo método getFailureLayoutRes

  • LoadingLayout

    Corresponde ao arquivo de layout da página de carregamento retornado pelo método getLoadingLayoutRes

4.2 Exemplo de implementação completa de uma página de carregamento personalizada: ​

Nota

Como o SDK utiliza internamente técnicas de reflexão para instanciar a classe de implementação, a classe de implementação da página de carregamento deve conter apenas o parâmetro Context no construtor.

Exemplos são os seguintes:

kotlin
class CustomLoadingPage constructor(context: Context) : IFinAppletLoadingPage(context) {

    override fun getFailureLayoutRes(): Int {
        // Error page layout resource file
        return R.layout.layout_applet_failure
    }

    override fun getLoadingLayoutRes(): Int {
        // Load page layout resource file
        return R.layout.layout_applet_loading
    }

    override fun onLoadingFailure(msg: String) {
        // This method is deprecated, please use the following onLoadingFailure(title: String, msg: String)
    }

    override fun onLoadingFailure(title: String, msg: String) {
        // Error page error message body
        failureLayout.findViewById<TextView>(R.id.tvLoadingFailedTitle).text = title
        failureLayout.findViewById<TextView>(R.id.tvLoadingFailedMsg).text = msg
    }

    override fun onUpdate(appTitle: String, appAvatarUrl: String) {
        // Loading page applet name
        loadingLayout.findViewById<TextView>(R.id.tvTitle).text = appTitle
        // Loading page applet icon
        ImageLoader.get(context).load(appAvatarUrl, object : DrawableCallback {
            override fun onLoadFailure() {

            }

            override fun onLoadSuccess(r: Drawable) {
                loadingLayout.findViewById<RoundedImageView>(R.id.ivAvatar).setImageDrawable(r)
            }
        })
    }
}

4.3 Configurando a página de carregamento durante a inicialização do SDK ​

kotlin
val uiConfig = FinAppConfig.UIConfig()
// Configuring custom loading pages
uiConfig.setLoadingLayoutCls(CustomLoadingPage::class.java)

val config = FinAppConfig.Builder()
        // Other configuration items omitted
        .setUiConfig(uiConfig)
        .build()

FinAppClient.init(application, config, object : FinCallback<Any?> {
    override fun onSuccess(result: Any?) {

    }

    override fun onError(code: Int, error: String) {

    }

    override fun onProgress(status: Int, error: String) {
    }
})