読者です 読者をやめる 読者になる 読者になる

via芸するやつの新しいバーサイズ設定について

 via芸するやつのバーサイズ設定で説明が割と面倒なので、エントリ書きます。
 なんか使いにくいとかいうツイートを見かけたもので。おそらく使いにくいというのはバー設定が値で設定できなくなったことでしょう。私も余り満足はしていないですがそれについて説明します。
 初めに、バーサイズ設定は今までどうだったかというと、Gravityを
「右上」「右中央」「右下」「左上」「左中央」「左下」
の6つから選んでそのバーの長さ、幅をどちらもピクセル数で設定していました。
 しかしこれでは当然右斜め上とかの設定ができなかったので、仕様変更しました。そして現在の仕様は以下のようになっています。

  1. Gravityは上固定 (左右はラジオボタンで選択した側)
  2. 幅は今までどおりピクセル数指定
  3. 長さという概念はなくなり、上の位置のy座標、下の位置のy座標を指定
  4. 大抵の端末の横画面と縦画面の長さは異なるので、今までどおり縦の長さ固定がいい人はチェックを入れ、ディスプレイサイズが変わった(画面が回転した)ときは、その画面に合わせた長さ(縦画面と同じ比)にすることもできるようになった

といった点です。ここで、3番を実装するにあたって、絶対座標で指定してしまった場合、ほぼ間違いなく横画面では予期せぬ場所にバーが来ることになります。それを避けるために、現在は画面の縦の長さを1000としたときの何か(デフォルトでは上の位置が333、下の位置が667)とすることで、今までとほぼ同じ座標を指定できるようになっています。
 なぜ縦の画面サイズを基準にせず、1000にしたのかというと、そこまで縦の長さに拘って欲しくなかった、というのがあります。というのも、今後の機能追加を実装するにあたり、例えば右隅にボタンのように配置する、といった使い方をして欲しくないからです。これについては今後のアップデートでわかると思います。まぁつまり、ShootingStarのツイートボタンの上に被せる、みたいな使い方は非推奨ってことです。
 今から縦の画面サイズ基準に治すこともできるのですが、それよりも重大な問題があります。4番です。4番で横画面時のサイズ設定の話をしたのですが、それぞれの実装についてざっくり説明したいと思います。

1. 横画面時も縦画面時と同じ長さ
 横画面にするとはみだすことがありますが、それはまず考えないことにします。はみ出さない場合、空白ができるのですが、例えば右下に正方形のボタンを作成していたとき、上の余白が大きすぎてボタンが画面外に出ます。Gravity設定は上のままでボタンをちょうど右下に配置するため、縦画面時の上の余白と下の余白の比を求め、その比を横画面時にも適用します。そうすることで、右下だった場合、下の余白の比は0になるので下に来ます。

2. 横画面時に縦画面と同じ比率にする場合
 これは簡単です。ただ単に、横画面時の縦の長さを1000として配置すれば良いためです。

 そして、ここからが私が設定画面に値を表示できなかった理由です。
 もしも、画面の長さを1000としたときの値をそのまま出力した場合、「何この値、わけわかんないんだけど」という人が続出します。このエントリの上の説明はかなり説明不足感があるため、もしかするとあなたは理解できていないかもしれませんが、それと同じ状況が他の人にも起こります。
 もしも、画面の長さをディスプレイのピクセル数に置き換えて表示した場合、横画面で値が変わります。すると多分「何でさっき設定した値になってねぇんだよこの糞アプリが!」という人が続出します。また長さ固定にチェックを入れると、更に意味不明な値になってしまいます。

 これらの理由から、値を表示してしまうと逆にわけわからなくなってしまうため、直感的に理解してもらおうとあえて値表示をしませんでした。また先程も説明したように、ボタンのように使用して欲しくないという理由もあります。