ANA旅割計算の締め切り日表示するアプリを作ってみました。

20150504

Logging


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();
    }
}

 

タグ

AM,