ユーザーインターフェイス /
コンポーネント / アクティビティインジケータ
アクティビティインジケータ
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リファレンス
ネイティブコンポーネント