0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Xamarin】C#でAndroidアプリを作ってみる 4 (画面作成2)

Last updated at Posted at 2019-10-28

#概要
前回:C#でAndroidアプリを作ってみる 3 (画面作成1)
今回は、選択した日付の干支×星座算出部分を作ります。

干支を算出する

干支の求め方を参考に計算します。
MainActivity.csに以下のコードを追加します。

MainActivity.cs

        // 十二支
        private const string ETO = "申酉戌亥子丑寅卯辰巳午未";

        /// <summary>
        /// 干支の算出
        /// </summary>
        /// <param name="year"></param>
        /// <returns></returns>
        private string GetEto(int year)
        {
            return ETO[year % 12].ToString();
        }

星座を算出する

星占いの星座です。
MainActivity.csに以下のコードを追加します。

MainActivity.cs
using System.Linq;

        // 星座
        private static Tuple<string, int, int>[] SEIZA = {
            Tuple.Create("牡羊座", 321, 419),
            Tuple.Create("牡牛座", 420, 520),
            Tuple.Create("双子座", 521, 621),
            Tuple.Create("蟹座", 622, 722),
            Tuple.Create("獅子座", 723, 822),
            Tuple.Create("乙女座", 823, 922),
            Tuple.Create("天秤座", 923, 1023),
            Tuple.Create("蠍座", 1024, 1122),
            Tuple.Create("射手座", 1123, 1221),
            Tuple.Create("山羊座", 1222, 1231),
            Tuple.Create("山羊座", 101, 120),
            Tuple.Create("水瓶座",121, 218),
            Tuple.Create("魚座", 219, 320)
        };

        /// <summary>
        /// 星座の算出
        /// </summary>
        /// <param name="month"></param>
        /// <param name="day"></param>
        /// <returns></returns>
        private static string GetSeiza(int month, int day)
        {
            var target = int.Parse($"{month}{day.ToString("00")}");

            var seiza = SEIZA.FirstOrDefault(s => s.Item2 <= target && target <= s.Item3);
            return seiza.Item1;
        }

計算の都合上、山羊座は2期間に分けています。

干支と星座の算出結果を表示する

日付を選択した後、干支と星座を画面に表示するようにします。
MainActivity.csのDateSelectButton_Clickを以下のように変更します。

MainActivity.cs
        /// <summary>
        /// SELECT DATEボタン押下時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DateSelectButton_Click(object sender, System.EventArgs e)
        {
            var frag = DatePickerFragment.NewInstance(delegate (DateTime time)
            {
                selectedDateLabel.Text = time.ToString("yyyy年MM月dd日") 
                    + $"あなたは、{GetEto(time.Year)}{GetSeiza(time.Month, time.Day)}です。";
            });
            frag.Show(FragmentManager, DatePickerFragment.TAG);
        }

実行してみる

実機でデバッグ実行します。
SELECT DATEボタンをタップして日付を選択し、OKをタップします。
算出結果.png
日付の選択、干支と星座の算出結果が表示されました。

まとめ

今回は、選択した日付の干支×星座を算出し、画面に算出結果を表示するところまでを行いました。
次回は、もう少し見栄えを良くしようと思います。
次回分はこちら⇒C#でAndroidアプリを作ってみる 5 (見栄えの調整)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?