ActivityIndicatorとは?
ActivityIndicatorとは,処理中などを示すくるくると回るアニメーションです。処理中にこれを表示するだけで,ユーザーのストレスは軽減され,処理中であることが明確になるため,非常に使い勝手のいい機能ですね。
準備
今回はActivityIndicatorPageというコンテンツページを作成して検証していきたいと思います。ここまで順番に解説をよんでいただいている方は,ActivityIndicatorPage という新規のコンテンツページを作って,MenuPageから呼び出せるようにしてください。ここから初めて読んでいる方は,Xamarin.Formsのデフォルトで作成されるMainPageにActivityIndicatorPageの実装をして問題ありません。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using XSample.Objects;
namespace XSample.Pages
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MenuPage : ContentPage
{
public MenuPage ()
{
InitializeComponent ();
var dtos = new List();
dtos.Add(new MenuDto("ControlsPage", "コントロールの一覧", "mail.png"));
dtos.Add(new MenuDto("ActivityIndicatorPage", "処理中にくるくるまわるやつ", "mail.png"));
MyListView.ItemsSource = dtos;
}
private void MyListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
var item = e.Item as MenuDto;
//DisplayAlert(item.Title, item.SubTitle, "OK");
if (item.Title == "ControlsPage")
{
Navigation.PushAsync(new ControlsPage());
}
else if (item.Title == "ActivityIndicatorPage")
{
Navigation.PushAsync(new ActivityIndicatorPage());
}
}
}
}
ActivityIndicatorPageの追加
Pagesフォルダーに新規追加でActivityIndicatorPageという名前のコンテンツページを作成してください。作成されたらデフォルトのStackLayoutの部分を削除して,次のように記述します。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XSample.Pages.ActivityIndicatorPage">
<ContentPage.Content>
<AbsoluteLayout>
<ActivityIndicator IsRunning="True"
x:Name="MyActivityIndicator"
Color="Blue"
AbsoluteLayout.LayoutBounds="0.5,0.5,50,50"
AbsoluteLayout.LayoutFlags="PositionProportional"/>
</AbsoluteLayout>
</ContentPage.Content>
</ContentPage>
AbsoluteLayout
AbsoluteLayoutはコントロールを比率や座標指定で配置できるパネルです。普段はStackLayoutを使用していますが,StackLayoutだと,コントロールを配置すればするほど位置が移動してしまうため,必ず真ん中に表示されるようにAbsoluteLayoutを使用します。
AbsoluteLayout.LayoutBoundsは「x座方」「y座標」「横幅」「高さ」の順に指定します。
AbsoluteLayout.LayoutFlagsをPositionProportionalにすることで,xとyの座標を比率で指定できます。今回は中央に表示したいので「0.5,0.5,50,50」と指定しています。xとy座標を,50%を示す0.5とし,横幅と高さを絶対値の50ピクセルにしています。これで真ん中に50ピクセルの「くるくる」を表示することができます。
IsRunning
ActivityIndicatorのIsRunningをTrueにしている間中「くるくる」が表示され続けます。不要になったタイミングでFalseにしましょう。
Color
「くるくる」の色を指定できます。
実行
実行すると真ん中に「くるくる」が表示されます。UWPは横方向に点が移動するイメージですね。UWPの横幅はもっと広げたほうが見栄えがいいかもしれません。
今のままの実装だと,「くるくる」が真ん中に表示されていますが,他のコントロールを置く場合にどのように配置したらいいかが問題となります。通常の使い方だと,ListViewなどの検索が必要なコントロールに重ねて表示したいですよね。その場合は次のように実装します。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XSample.Pages.ActivityIndicatorPage">
<ContentPage.Content>
<Grid>
<AbsoluteLayout>
<ActivityIndicator IsRunning="True"
x:Name="MyActivityIndicator"
Color="Blue"
AbsoluteLayout.LayoutBounds="0.5,0.5,50,50"
AbsoluteLayout.LayoutFlags="PositionProportional"/>
</AbsoluteLayout>
<StackLayout>
<Button Text="AAA"/>
<Button Text="AAA"/>
<Button Text="AAA"/>
<Button Text="AAA"/>
<Label Text="BBB"/>
<Label Text="BBB"/>
<Label Text="BBB"/>
<Label Text="BBB"/>
</StackLayout>
</Grid>
</ContentPage.Content>
</ContentPage>
Gridを定義し,その中に先ほどのAbsoluteLayout上のActivityIndicatorと,別途コントロールを配置したいStackLayoutの両方を配置します。Gridに対して行と列を指定していないので,どちらのコンテナも行ゼロ,列ゼロの状態で重なりあって表示されます。これで,StackLayoutにいつも通りコントロールを配置しても,真ん中に「くるくる」が表示されるようになります。
実行
コントロールが複数表示されながらも,真ん中に「くるくる」が表示されているのが確認できます。
- C#Xamarin.Formsでスマホ開発#01プロジェクト作成の方法
- C#Xamarin.Formsでスマホ開発#02プロジェクトの実行【Android実機編】
- C#Xamarin.Formsでスマホ開発#03エミュレーターでのAndroid接続
- C#Xamarin.Formsでスマホ開発#04 UWPの実行
- C#Xamarin.Formsでスマホ開発#05マルチスタートアッププロジェクトの設定
- C#Xamarin.Formsでスマホ開発#06 StackLayoutの使い方を解説
- C#Xamarin.Formsでスマホ開発#07 VerticalOptionsとHorizontalOptionsの使い方
- C#Xamarin.Formsでスマホ開発#08文字色&背景色とFontsizeの使い方
- C#Xamarin.Formsでスマホ開発#09 Gridの使い方
- C#Xamarin.Formsでスマホ開発#10画面遷移のやり方
- C#Xamarin.Formsでスマホ開発#11 TabbedPageの作り方
- C#Xamarin.Formsでスマホ開発#12 TabbedPageの中身の作り方
- C#Xamarin.Formsでスマホ開発#13 MasterDetailPageの作り方
- C#Xamarin.Formsでスマホ開発#14 ListViewの作り方
- C#Xamarin.Formsでスマホ開発#15 CarouselPageの作り方
- C#Xamarin.Formsでスマホ開発#16 DisplayAlertの使い方
- C#Xamarin.Formsでスマホ開発#17 DisplayActionSheetの使い方
- C#Xamarin.Formsでスマホ開発#18 Deviceごとの処理切り替え方法
- C#Xamarin.Formsでスマホ開発#19 LoadとCloseに代わるもの
- C#Xamarin.Formsでスマホ開発#20 戻るボタンを非表示にする
- C#Xamarin.Formsでスマホ開発#21 ViewCellの共通化のやり方
- C#Xamarin.Formsでスマホ開発##22 Switchの使い方を解説
- C#Xamarin.Formsでスマホ開発#23 コントロールをデータバインドする方法
- C#Xamarin.Formsでスマホ開発#24 Sliderの使い方を解説
- C#Xamarin.Formsでスマホ開発#25 Stepperの使い方を解説
- C#Xamarin.Formsでスマホ開発#26 Entryの使い方を解説
- C#Xamarin.Formsでスマホ開発#27 Editorの使い方を解説
- C#Xamarin.Formsでスマホ開発#28 Pickerの使い方を解説
- C#Xamarin.Formsでスマホ開発#29 Pickerでデータバインディングする方法
- C#Xamarin.Formsでスマホ開発#30 DatePickerとTimePickerの使い方
- C#Xamarin.Formsでスマホ開発#31 SearchBarの使い方を解説
- C#Xamarin.Formsでスマホ開発#32 ToolbarItemの使い方を解説
- C#Xamarin.Formsでスマホ開発#33 TableViewの使い方を解説
- C#Xamarin.Formsでスマホ開発#34 ActivityIndicatorの使い方を解説
- C#Xamarin.Formsでスマホ開発#35 ListViewを下に引っ張て更新する方法