ユーザーインターフェイス / コンポーネント / アクティビティインジケータ

アクティビティインジケータ

ActivityIndicatorは、画像、データの読み込み、要求の受け入れなどのバックグラウンド処理の際に、進行状況を表示するUIウィジェットを提供します。 論理値のプロパティbusyを設定またはバインドすることにより、その動作を制御できます。

使用法

busyプロパティをtrueまたはfalseに設定して、コントロールを表示または非表示に操作できます。

<ActivityIndicator busy="{{ isBusy }}" loaded="indicatorLoaded"/>
const Observable = require("tns-core-modules/data/observable").Observable;

function onNavigatingTo(args) {
	const page = args.object;

	const vm = new Observable();
	vm.set("isBusy", true);
	page.bindingContext = vm;
}
exports.onNavigatingTo = onNavigatingTo;


function indicatorLoaded(args) {
	const activityIndicator = args.object;
	activityIndicator.on("busyChange", (aiargs) => {
		const indicator = aiargs.object;
		console.log(`indicator.busy changed to: ${indicator.busy}`);
	});
}
exports.indicatorLoaded = indicatorLoaded;
import { EventData, Observable } from "tns-core-modules/data/observable";
import { Page } from "tns-core-modules/ui/page";
import { ActivityIndicator } from "tns-core-modules/ui/activity-indicator";

export function onNavigatingTo(args: EventData) {
	const view = args.object as Page;
	const vm = new Observable();
	vm.set("isBusy", true);
	view.bindingContext = vm;
}

export function indicatorLoaded(args: EventData) {
	let activityIndicator = args.object as ActivityIndicator;
	activityIndicator.on("busyChange", (aiargs: EventData) => {
		let indicator = aiargs.object as ActivityIndicator;
		console.log("indicator.busy changed to: " + indicator.busy);
	});
}

デモソース


スタイリング

ActivityIndicatorは、color(デフォルト値はblue) およびbackgroundColor(デフォルト値はtransparent)プロパティのスタイル設定をサポートしています。

<ActivityIndicator busy="true" color="red" width="100" height="100"/>
NATIVESCRIPT-THEME-CORE CSS class 説明
activity-indicator メインテーマの色と同期してインジケーターのcolorを設定します。

デモソース


ヒントと手法

iOSのUIActivityIndicatorViewStyleの変更

<ActivityIndicator loaded="onLoaded" busy="true" backgroundColor="red" width="100" height="100"/>
const isIOS = require("tns-core-modules/platform").isIOS;

function onLoaded(args) {
	const view = args.object;

	if (isIOS) {
		// accessing the native iOS API https://developer.apple.com/documentation/uikit/uiactivityindicatorviewstyle
		view.ios.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.White;
	}

}
exports.onLoaded = onLoaded;
import { isIOS } from "tns-core-modules/platform";
import {ActivityIndicator} from "tns-core-modules/ui/activity-indicator";

export function onLoaded(args) {
	const view = args.object as ActivityIndicator;

	if (isIOS) {
		// accessing the native iOS API https://developer.apple.com/documentation/uikit/uiactivityindicatorviewstyle
		view.ios.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.White;
	}

}

コードビハインドによるActionBarの作成

ActivityIndicatorの動的なコードビハインド作成および画像の読み込み中のインジケーターの表示。

const myloadingObject = { isLoading: true };

const indicator = new ActivityIndicator();
// Bind the busy property of the indicator to the isLoading property of the image
indicator.bind({
	sourceProperty: "isLoading",
	targetProperty: "busy"
}, myloadingObject);

console.log(indicator.busy); // busy is a writable property
myStack.addChild(indicator);
const myloadingObject = { isLoading: true };

const indicator = new ActivityIndicator();
// Bind the busy property of the indicator to the isLoading property of the image
indicator.bind({
	sourceProperty: "isLoading",
	targetProperty: "busy"
}, myloadingObject);

console.log(indicator.busy); // busy is a writable property
myStack.addChild(indicator);

デモソース


プロパティ

名前 タイプ 説明
busy boolean ウィジェットが現在進行状況を表示しているかどうかを示す値を取得または設定します。

イベント

名前 説明
busyChange ActivityIndicatorのbusyプロパティが変更されたときに発生します。
loaded ビューがロードされたときに発生します。
unloaded ビューがアンロードされるときに発生します。
layoutChanged ビューのレイアウト境界がレイアウト処理のために変更されたときに発生します。

APIリファレンス

名前 タイプ
ActivityIndicator Module
ActivityIndicator Class

ネイティブコンポーネント

ANDROID IOS
android.widget.ProgressBar (indeterminate = true) UIActivityIndicatorView
入門

コアコンセプト

ユーザーインターフェース

ツール

ハードウェアアクセス

プラグインの開発

リリース

アプリテンプレート

パフォーマンスの最適化

フレームワークモジュール

ガイド

サポートを受ける

トラブルシューティング

Siedkick