【PowerApps】こいつ動くぞ!動的なハンバーガーメニューの作り方
・はじめに
「リンクメニューとか、動的に展開/縮小させたいなぁ」と思い、作ったハンバーガーメニューです。
こんなことができるようになります。
・アイコンクリックでメニューを表示
・メニュー表示はアニメーションで徐々に表示される
・メニューをクリックするとリンク先のページに遷移
・メニューを閉じるときは再度アイコンをクリックする
・基本構成
アプリに挿入するパーツは以下の通り。
挿入するパーツ | 名前 | 備考 |
---|---|---|
ハンバーガーメニューアイコン | Open_Icon | メニュー表示用 |
ハンバーガーメニューアイコン | Close_Icon | メニュー閉じる用 |
タイマー | Timer | 動的にメニューを表示するため |
ギャラリー(縦) | Gallary | メニュー本体 |
その他、アプリ内で利用するコレクションや変数については こちら を参照ください。
・実装方法
ハンバーガーメニューの形を作る
まずは、ハンバーガーメニューを表示した時の形を作成しましょう。
1. リボンメニュー > アイコン > ハンバーガーメニュー アイコンをスクリーン上に配置します。
2. リボンメニュー > 入力 > タイマー をスクリーン上に配置します。
3. リボンメニュー > ギャラリー > 縦 を選択します。※データソースは後で選択
4. 追加したギャラリーの配置をハンバーガーメニューの左側もしくは右側に合わせます。
配置イメージはこんな感じです。
各パーツの名前は下図の通り修正します。
メニュー用のコレクションを作成する
メニュー内容を用意するため、コレクションを作成します。
5. ツリービューに表示されている「App」をクリックします。
6. Appの詳細設定で OnStart に下記を設定します。
ClearCollect(MenuCollection,
{No:1,url:"https://www.google.com/",Name:"Google"},
{No:2,url:"https://www.yahoo.co.jp/",Name:"Yahoo"},
{No:3,url:"https://www.bing.com/",Name:"Bing"},
{No:4,url:"",Name:""},
{No:5,url:"",Name:""},
{No:6,url:"",Name:""},
{No:7,url:"",Name:""},
{No:8,url:"",Name:""},
{No:9,url:"",Name:""},
);
Set(MenuView,0);
ギャラリーにデータソースを追加する
作成したコレクション(MenuCollection)をギャラリーに登録します。
7. ギャラリーをクリックして「MenuCollection」を選択する。
8. ギャラリーのレイアウトを「イメージとタイトル」に変更します。
9. 不要な矢印は削除します。
ギャラリーにアニメーションを追加する
アイコンクリック時にメニューを表示するためにタイマーを利用します。
時間経過に伴って徐々に表示していきます。
・タイマー修正
10. タイマーの詳細設計で下記項目を修正します。
項目 | 設定値 |
---|---|
OnTimerEnd | Set(TimerClick,0) |
Start | If(TimerClick=1,true,false) |
Duration | 185 |
Reset | If(MenuView=0,true,false) |
Text | Self.Value |
・ハンバーガーメニュー(メニュー表示用)アイコン修正
11. アイコン(Open_Icon) の詳細設計で下記項目を修正します。
項目 | 設定値 |
---|---|
OnSelect | Set(TimerClick,1); Set(MenuView,1) |
Visible | If(MenuView=0,true,false) |
・ギャラリー修正
12. ギャラリーの詳細設計で下記項目を修正します。
※このとき、ギャラリー内のアイテム部分を選択してください。
項目 | 修正値 | 説明 |
---|---|---|
OnSelect | Launch(ThisItem.url,{},LaunchTarget.Blank) | 別タブで開く |
BorderThickness | If(Timer.Value > 1,1,0) | タイマー起動時に線を表示 |
Height | If(Timer.Value > Timer.Duration+1,Timer.Duration*3,Timer.Value*3) | 時間経過とともに高くなる |
※ギャラリーの表示速度は Heightに設定している「Timer.Duration*3」部分で制御しています。
メニューを閉じる処理を追加する
ここまでで、アイコン(Open_Icon) クリックでメニューを表示できるようになりました。
最後にメニューを閉じる処理を追加します。
・ハンバーガーメニュー(メニュー閉じる用)アイコン修正
13. 表示用アイコン(Open_Icon) に重ねて、閉じる用アイコン(Close_Icon) を追加します。
14. 閉じる用アイコン(Close_Icon) の詳細設計で下記項目を修正します。
項目 | 設定値 |
---|---|
OnSelect | Set(TimerClick,0);Set(MenuView,0); |
Visible | If(MenuView=1,true,false) |
動作確認
動作確認し、ハンバーガーメニューが動いていればOKです。
最後に、Timerを非表示にして完成です。
アプリ内で利用するコレクション、変数
メニューとして利用するコレクション(MenuCollection)の構成は以下の通り。
列名 | 用途 |
---|---|
No | ※未使用 |
url | リンク先 |
Name | メニューに表示するテキスト |
使用する変数の名前と用途は以下の通り。
変数名 | 用途 | 説明 |
---|---|---|
TimerClick | タイマーの起動/停止を制御します | 0:停止、1:起動 |
MenuView | ギャラリーの表示/非表示を制御します | 0:表示、1:非表示 |
Author And Source
この問題について(【PowerApps】こいつ動くぞ!動的なハンバーガーメニューの作り方), 我々は、より多くの情報をここで見つけました https://qiita.com/kura_yu/items/77f9f6e891748141ad09著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .