kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

プライバシーポリシー

プライバシーポリシー

制定 2017年2月7日
最終改定日 2017年2月8日
責任者 Kojitto
連絡先 kentaro198477@gmai.com

Kojittoは、Kojittoの提供するアプリ(以下、当アプリ)上で提供するサービスにおける
プライバシー情報の取り扱いについて、以下の通り
プライバシーポリシーを定めます。

プライバシー情報について

1.プライバシー情報のうち「個人情報」とは、個人情報保護法にいう
「個人情報」を指すものとし、生存する個人に関する情報であって、
当該情報に含まれる氏名、生年月日、住所、電話番号、連絡先その他
の記述により特定の個人を識別できる情報を指します。

2.プライバシー情報のうち「履歴情報および特性情報」とは、
上記に定める「個人情報」以外のものをいい、ご利用頂いたサービスや、
ご購入された商品、ご覧になったページや広告の履歴、
検索されたキーワード、ご利用日時、ご利用の方法、ご利用環境、
郵便番号や性別、職業、年齢、ユーザーのIPアドレス、クッキー情報、
位置情報、端末の固体識別情報などを指します。

当アプリに掲載される広告について

当アプリでは、第三者配信の広告サービスを利用しています。
このような広告配信事業者は、ユーザーの興味に応じた商品やサービス
の広告を表示するため、ユーザーの特性(性別、生年月日、位置情報、過去に閲覧したページや購入した商品など)
に関する情報を利用することがあります。

当アプリで取得される個人情報と利用目的について

1.上記の広告配信に際し、「履歴情報および特性情報」にあたるユーザーの特性に関する情報に限り、適正な方法で取得し、広告配信事業者に提供することがあります。
利点としては、女性のユーザーに対して男性を対象にしたサービスのように、関連性の低い広告が頻繁に表示されるのを防ぎます。
Kojittoとしては、これがプライバシー情報の利用目的の全てであり、
提携する広告事業者以外の第三者に情報を開示することはありません。

2.ユーザーの操作に応じて、端末・SDカード内のデータを参照することがあります。
これらは、当アプリ内の「閉じた環境」において、外観や通知音などをカスタマイズする目的でのみ利用されます。

インストール時にカメラ機能の権限を要求するアプリについて

当アプリの一部には、演出や、ユーザーへの通知の手段として、カメラのフラッシュ機能を利用するアプリがあります。
フラッシュの利用にあたって端末のカメラ機能へのアクセスが必要となります。
カメラ機能の権限は上記目的でのみ利用され、撮影データの取得、保存等は一切行われません。


プライバシーポリシーの変更が生じた場合は、当ページで通知いたします。

Shapeでアクアボタン風リソース

Shapeで作ってみた

f:id:kentaro198477:20170206235029p:plain

前回記事と同様に、こんどは横長のアクアボタン風リソースを作ってみました。
ちょっと違うけど、なんとなくそれっぽいのではないかと思います。
緑のボタンはテキストシャドウを設定しています。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>

        <layer-list>

            <item>
                <shape android:shape="rectangle" >
                    <corners android:radius="100dp" />
                    <gradient
                        android:endColor="#15000000"
                        android:startColor="#23000000"
                        android:angle="90"/>
                    <padding android:top="3dp" android:bottom="3dp" android:left="3dp" android:right="3dp"/>
                </shape>
            </item>

            <item >
                <shape android:shape="rectangle" >
                    <corners android:radius="100dp" />
                    <solid android:color="#00bfff"/>
                </shape>
            </item>

            <item>
                <shape android:shape="rectangle" >
                    <corners android:radius="100dp" />
                    <gradient
                        android:startColor="#b7000000"
                        android:endColor="#00ffffff"
                        android:angle="270" />
                </shape>
            </item>

            <item android:top="3dp" android:left="3dp" android:right="3dp" android:bottom="3dp">
                <shape android:shape="rectangle" >
                    <corners android:radius="100dp"/>
                    <gradient
                        android:centerY="0.7"
                        android:startColor="#b0ffffff"
                        android:centerColor="#3b8b8b8b"
                        android:endColor="#d0ffffff"
                        android:angle="90" />
                </shape>
            </item>

        </layer-list>
    </item>
</selector>

今回も、レイヤーリストでいくつかの画像を重ねています。
を指定して調整して作ると、もっとそれっぽい画像になったんですが、
Buttonのバックグラウンドとして使うと、が無視されてしまうため、
一部が伸びてしまったりしてバランスが変になります。
(ImageViewだと綺麗に表示されるが、テキストも表示したい)

また、Shapeはボカした感じの表現が難しいので、
ふちがくっきりしすぎています。
少しでも雰囲気をプラスするために、
グリーンのボタンには
テキストにシャドウを施してみました。


AQUAなボタン、なんか押したくなりますよね♪

Shapeでアクアなボタンを作ってみた

以下のようなリソースを作ってみました。
f:id:kentaro198477:20170202230555p:plain
レイヤーリストに、左から①②③④のアイテムを順次描画しています。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>        
        <layer-list>

            <!--①-->
            <item >
                <shape android:shape="oval" >
                    <size android:height="100dp" android:width="100dp"/>
                    <solid android:color="#0000ff"/>
                </shape>
            </item>

            <!--②-->
            <item>
                <shape android:shape="oval" >
                    <gradient
                        android:centerColor="#a8000000"
                        android:centerX="0.5" android:centerY="0.7"
                        android:gradientRadius="100dp"
                        android:type="radial" />
                </shape>
            </item>

            <!--③-->
            <item>
                <shape android:shape="oval" >
                    <gradient
                        android:startColor="#7affffff"
                        android:centerX="0.5" android:centerY="0.9"
                        android:gradientRadius="100dp"
                        android:type="radial" />
                </shape>
            </item>

            <!--④-->
            <item   android:top="4dp" android:left="16dp" android:right="16dp" android:bottom="48dp" >
                <shape android:shape="oval" >
                    <gradient android:startColor="#00ffffff" android:endColor="#ffffff" android:angle="90"/>
                </shape>
            </item>

        </layer-list>        
    </item>   
</selector>
<||

汎用性を考え、色味の部分は①だけです。
②や③で上手く色を混ぜられたら、より深みのある表現になりそうです。
縁取りをぼかせていないので、アクアというより、ガラス玉のような質感になってしまいました。

電卓アプリ【お買い物電卓】リリースしました!

f:id:kentaro198477:20170201113217p:plain

お買い物電卓【割引・割り勘・消費税を簡単計算!】 - Google Play の Android アプリ


お買い物電卓~☆

・・・いいタイトルが思いつかなかった(笑)
「何が出来るか」がわかることと、文字が全て表示されることが大事ということでコレにしました。


f:id:kentaro198477:20170201113231p:plain

式と答えが見える電卓!

式を入力していくと、答えが随時更新されて表示されます。
ちゃんと四則演算に対応。
%は先に計算。
カッコ()には未対応。普段の買い物ではカッコはたぶん使わないからね(笑)
ターゲティングをしっかりしてみる!


f:id:kentaro198477:20170201113258p:plain

割引計算

極力シンプルに。ツマミを動かしてチェックマークを押したら式に適用されます。
背景のグラデーションが引き締まるように、このようなビューは黒くしました。
ちょっと簡素すぎるかな。。。

f:id:kentaro198477:20170201113312p:plain

割り勘計算

右のナンバーピッカーをコロコロすると一人当たりの金額と端数が計算されます。
現時点で、最小単位は10(円)です。
外国の通貨とかよくわからないから最小単位を固定してますが、
割り勘のときは100円単位が多いから、実装を検討中。

f:id:kentaro198477:20170201113304p:plain

計算履歴

値段の比較をしたりするので、やはり履歴は欠かせない!
シンプルな感じで、画面を切り替えずに閲覧できるようにしました。
あまり使われないかもしれないけど、
式をタップ → 現在の式と置き換える
答えをタップ → 現在のフォーカス位置に挿入
 ができるようにしました。


f:id:kentaro198477:20170201113240p:plain

Androidで、あまりしっくりくる電卓に出会ったことがありません。
字体だったり色だったり、タッチ振動も意外と重要。
なので、自分が本当に使いたい電卓を作ってみました。
けっこう他からインスパイアされまくりですけど(笑)
ただ、その「自分が本当に使いたいデザイン」が、漠然と頭にあっても、
作品として落とし込むと、
「なんか違うな~」
という部分が、潰しきれていないです。
私の本業の美容師の現場でもそれはあります。
なので、これからも「お買い物電卓(仮)」のデザインは磨いていきたいと思います!

お読みいただきありがとうございました☆

play.google.com

SearchViewを使って検索のインテントを発行する

SearchViewを使って検索のインテントを発行する方法です。

ウィジェットとして任意の位置に配置できるほうのSearchViewです。
画面上部に現れる検索ダイアログや、アクションバーに組み込まれている検索ボックスではありません。

SearchView searchView = (SearchView)baseV.findViewById(R.id.searchView);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
        intent.putExtra(SearchManager.QUERY,query);
        startActivity(intent);
        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        return false;
    }
 });

検索開始のボタン(虫眼鏡のアイコン)が押された時は、
onQueryTextSubmitが呼ばれ、検索ボックスに入力されたテキストは(String型)queryとして渡されます。
黙示的インテントを発行し、外部アプリで検索を行います。

サーチビューに文字列をセットするときは、
setQuery(CharSequence query,boolean submit)
を使い、第二引数には、すぐに検索するかどうかをboolean型で指定します。

最後にボタンを押してから数秒後に一回だけ処理をする

最後にボタンを押してから数秒後に一回だけ処理をする方法です。

たとえばフローティングアクションボタン(FAB)を設置していて、
ユーザーが何かをしているときはFABは隠しておき、操作が終わった後にちょっと間を置いて再び表示したいときなどに。

private Handler handler;

    //    Handlerのインスタンスをフィールドに宣言

private void doSomethingLater(){

    if (handler != null) {
        handler.removeCallbacksAndMessages(null);

        //    既に予定があればそれはキャンセルする

    }

    handler = new Handler();

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            Toast.makeText(getApplicationContext(),"HELLO!",Toast.LENGTH_SHORT).show();

        }
    },3000l);    //    処理を予約します
}

doSomethingLater()を呼び出してから3秒後にトーストを表示します。
トーストが出る前に、再度 doSomethingLater() が呼ばれた場合は、
そこから3秒後に初めてトーストを表示します。

画面の向きを取得する

現在の画面の向きを取得する方法です。

Configuration configuration = getResources().getConfiguration();
switch(configuration.orientation) {
    case Configuration.ORIENTATION_PORTRAIT:   

    //    縦向き
       
        break;
    case Configuration.ORIENTATION_LANDSCAPE:

    //    横向き

        break;
}

Configurationクラスのorientationフィールドを調べることで、画面の現在の向きを知ることができます。