ANA旅割計算の締め切り日表示するアプリを作ってみました。
ANA旅割計算の締め切り日表示するアプリを作ってみました。Android4.0以降ならすんなりと動くと思います。ただし実機で確認したところ、上記のような見栄えの良い感じではなかったです。カレンダーが表示されていなくて、SELECTバーでの選択表示でした。ちなみにアプリのコードも貼っときます。まだまだ、改良できそうなんですけどダサいコードだな、どうすれば短いコードになるだろうと思ってます。最初はボタンをクリックしないで動くようにコードを書いていたのですが、実機で確認したら、datepikerのイベントが発生したらalert画面が表示される事になってたのですが、操作性を考慮してButtonに切り替えました。あえて、datepikerのイベントで動くコードもコメントにして残してます。こんなしょぼいアプリを作るのに数時間費やしました。アルゴリズム的には出来るですが、未知の言語は辛いですAndroidのAPI機能が全然わからない感じです・・・・。リファレンスの本を買おうかな。。。
今回のアプリは上位機種のAndroidならそれなりの見栄えで表示されると思います。
DLはこちらから、
https://zip358.com/tool/anatabiwari.apk?[v4.2~v4.4]
https://zip358.com/tool/anatabiwari2.apk[v5~]
改正版 追記:ウェブサービス (どちらもショボい(`・ω・´))
http://zip358.com/tool/ANAmobile/?[mobile用]
http://zip358.com/tool/ana_calendar/ [PC用]
package com.example.zip.myapplication4; import android.content.DialogInterface; import android.preference.DialogPreference; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.DatePicker; import android.app.AlertDialog; import android.widget.DatePicker.OnDateChangedListener; import java.security.acl.Permission; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatePicker datePicker1 = (DatePicker) findViewById(R.id.datePicker); Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); long time = cal.getTimeInMillis(); datePicker1.setMinDate(time); /* datePicker1.init(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH, new OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { String str = Integer.toString(year) +"/" + Integer.toString(monthOfYear + 1) + "/" + Integer.toString(dayOfMonth); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date date = null; Date date1 = null; Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); Calendar cal3 = Calendar.getInstance(); Calendar cal4 = Calendar.getInstance(); try { date = sdf.parse(str); cal1.setTime(date); cal1.add(Calendar.DATE, -60); cal2.setTime(date); cal2.add(Calendar.DATE, -45); cal3.setTime(date); cal3.add(Calendar.DATE, -28); cal4.setTime(date); cal4.add(Calendar.DATE, -21); new AlertDialog.Builder(MainActivity.this) .setTitle("ANA旅割締め切り日") .setMessage("旅割60締日"+ String.format("%2d月%2d日", cal1.get(Calendar.MONTH)+1, cal1.get(Calendar.DAY_OF_MONTH))+ "\n" + "旅割45締日"+ String.format("%2d月%2d日", cal2.get(Calendar.MONTH)+1, cal2.get(Calendar.DAY_OF_MONTH))+ "\n" + "旅割28締日"+ String.format("%2d月%2d日", cal3.get(Calendar.MONTH)+1, cal3.get(Calendar.DAY_OF_MONTH))+ "\n" + "旅割21締日"+ String.format("%2d月%2d日", cal4.get(Calendar.MONTH)+1, cal4.get(Calendar.DAY_OF_MONTH))+ "\n" ) .setPositiveButton("閉じる", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } catch (ParseException e) { e.printStackTrace(); } } }); */ } public void anatabi(View v) throws ParseException { DatePicker datePicker1 = (DatePicker) findViewById(R.id.datePicker); String str = Integer.toString(datePicker1.getYear()) +"/" + Integer.toString(datePicker1.getMonth()+1) + "/" + Integer.toString(datePicker1.getDayOfMonth()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date date = null; Date date1 = null; Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); Calendar cal3 = Calendar.getInstance(); Calendar cal4 = Calendar.getInstance(); date = sdf.parse(str); cal1.setTime(date); cal1.add(Calendar.DATE, -60); cal2.setTime(date); cal2.add(Calendar.DATE, -45); cal3.setTime(date); cal3.add(Calendar.DATE, -28); cal4.setTime(date); cal4.add(Calendar.DATE, -21); new AlertDialog.Builder(MainActivity.this) .setTitle("ANA旅割締め切り日") .setMessage("旅割60締日" + String.format("%2d月%2d日", cal1.get(Calendar.MONTH) + 1, cal1.get(Calendar.DAY_OF_MONTH)) + "\n" + "旅割45締日" + String.format("%2d月%2d日", cal2.get(Calendar.MONTH) + 1, cal2.get(Calendar.DAY_OF_MONTH)) + "\n" + "旅割28締日" + String.format("%2d月%2d日", cal3.get(Calendar.MONTH) + 1, cal3.get(Calendar.DAY_OF_MONTH)) + "\n" + "旅割21締日" + String.format("%2d月%2d日", cal4.get(Calendar.MONTH) + 1, cal4.get(Calendar.DAY_OF_MONTH)) + "\n" ) .setPositiveButton("閉じる", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); } }
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AM,