BuildTypeでもフレーバーみたいにリソース分けられた

今回もプログラム無しで、しかもタイトルで完結してる。。。

要件

リリースビルドとデバッグビルドで別のリソース(ファイル)を使いたい

やり方

共通のファイル(普段置いてるところ)
/src/main/
./java
./res
./assets

デバッグビルド時に使いたいファイル
/src/debug/
./java
./res
./assets

リリースビルド時に使いたいファイル
/src/release/
./java
./res
./assets

実際にはassets配下しか試してませんが、
assetsが動いてその他が動かないはずないので、
いけると思います。

KotlinでAndroid

KotlinでAndroidアプリを作ろう

✳今回はコード無しです。。。

メリット

  • ロジックの記述量が圧倒的に少ない
  • javaから違和感なく言語変更できる
  • javaも呼べるから怖ければ部分的でもjavaで書けばいい
  • コード変換でまあまあjavaからkotlinに変更してくれる

✳null safeや拡張メソッドなども便利です。

デメリット

  • 導入するとメソッド数が7000くらい消費されるのでmultixexが不安
  • アプリ容量も1M近く増える
  • javaを書くのが嫌になる
  • まだ新しい技術だから根拠のない不安がある

デメリットの上2つはProguardで軽減可能

javaでしかアプリ作成してない人は1度無理矢理でいいのでkotlinにチャレンジすると幸せになれます。

kotlin extensions for Androidも一緒に導入してください
ButterKnifeよりも楽でレイアウトのミスもコーディング中に気づけます。

間違えて消したなど限定

KotlinでAndroid

KotlinでAndroidアプリを作ろう

✳今回はコード無しです。。。

メリット

  • ロジックの記述量が圧倒的に少ない
  • javaから違和感なく言語変更できる
  • javaも呼べるから怖ければ部分的でもjavaで書けばいい
  • コード変換でまあまあjavaからkotlinに変更してくれる

デメリット

  • 導入するとメソッド数が7000くらい消費されるのでmultixexが不安
  • アプリ容量も1M近く増える
  • javaを書くのが嫌になる
  • まだ新しい技術だから根拠のない不安がある

デメリットの上2つはProguardで軽減可能

javaでしかアプリ作成してない人は1度無理矢理でいいのでkotlinにチャレンジすると幸せになれます。

kotlin extensions for Androidも一緒に導入してください
ButterKnifeよりも楽でレイアウトのミスもコーディング中に気づけます。
✳間違えて消したなど限定

初めてのRqils~動く環境構築編~

Railsの開発環境をWindowsに構築します。

手順

http://rubyinstaller.org/downloads/
にアクセスし、以下のファイルをダウンロードします。
※64bitを想定
Ruby 2.1.7 (x64)
DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

Ruby 2.1.7はパスを設定するチェックボックスにチェックを付ける以外は次へを押すだけです。
DevKitは解凍先を聞かれるので、C直下などにdevkitなどとして解凍します。
※両方とも日本語やスペースが入ってるパスは指定しない方がいいらしいです。

解凍が終わったら以下のコマンドを入力します。


cd \devkit
devkitvars
ruby dk.rb init

するとdevkit直下にconfig.ymlファイルが出来るので、rubyのパスを確認します。
問題がなければ以下のコマンドを実行します。


ruby dk.rb install

環境は完成したので、MySqlなプロジェクトを作成します。
以下のコマンドを実行します。


rails new sample -d mysql

sampleと言うプロジェクトをDBMSMySQLで作ると言う意味です。
bundle installを別で実行する場合は以下


rails new sample -d mysql --skip-bundle

次にscaffoldでdaoやコントローラを全自動作成します。


rails g scaffold user name:string user_id:string password:string
userテーブルにname,user_id,passwordがある事を指定しています。

※idと言うカラムを追加したら動いてくれなかったので注意。
自動でidカラムをPKで作ってくれるみたいです。
手動でPKのカラムを用意すれば問題なさそうです。(未検証)


rails s

ブラウザで以下にアクセス
http://localhost:3000/users

TypeError: オブジェクトでサポートされていないプロパティまたはメソッドです。
。。。チクショウRailsで踏むかもしれないと噂されてる問題全てを踏んで歩いてる。。。
仕事でもAndroid OSのBuletooth周りのバグを踏んだり、最近はついてないなぁ。。。

プロジェクト直下のGemfileをテキストエディタで開きます。
ファイル末尾に以下を記載


gem 'coffee-script-source', '1.8.0'

コマンドプロンプトでプロジェクトディレクトリに移動して、
bundle update coffee-script-source
を実行

この状態でrails sをしたら正常に起動してくれました。

書き忘れ

プロジェクト/config/database.ymlを開き、
中に書かれてるDBをMySQL側でCREATE DATABASEしておきます。
また、MySQLのユーザ(パスワード)をdatabase.ymlに記載します。
※テーブルは勝手に作ってくれるので作ったらダメです。
⇒db\migrate内のファイルをご確認ください

Design Support Libraryでマテリアルデザインなアプリを作る

Design Support Libraryを使ってオシャレになろう!!

だいぶ遅れ気味ですが、Design Support Libraryを勉強してみたので、
簡単に使い方を紹介します。

build.gradleのdependenciesに以下を記載してください

    compile 'com.android.support:design:22.2.+'

TextInputLayout

EditTextにhintを設定してもフォーカスを当てるとhintが消えてしまい、
何を入力すればいいのか分からなくなってしまいます。
そんな時の救世主がTextInputLayoutです。
フォーカスが当たるとhintがEditTextの上に表示されます。
また、エラー時はEditTextの下に表示する事も可能です。

使い方

layout.xml

    <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="ヒント"/>
    </android.support.design.widget.TextInputLayout>

xmlはEditTextをTextInputLayoutで囲います。

hintの表示はこれだけでOKです。
エラーをEditText下部に表示したい場合は以下のようにします。

mTxtInputLayout.setError("エラーです。");

Snackbarを使う

Toastの進化形で、1つだけアクションを指定する事ができます。
削除ボタン⇒Snack通知(削除しました "取り消し")⇒削除取り消しなど

使い方
アクション無しの場合(Toastがオシャレになっただけ)

    Snackbar.make(getView(), "削除しました", Snackbar.LENGTH_LONG).show();
    Snackbar.make(getView(), "宝くじが当たりました", Snackbar.LENGTH_LONG)
        .setAction("だが断る", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                orz();
            }
        }).show();

FloatingActionButtonを使う

Gmailの新規メールボタンのような右下に配置しているボタン

layout.xml

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_menu_camera" />

上記ではic_menu_cameraを指定しているので、カメラ画像のボタンが表示されます。
java側ではViewのOnClickListenerをセットすればいいのでbutton等と変わりません。
⇒butterknifeのOnClickアノテーションでもOKです。

注意点

FloatingActionButtonを使用している画面でSnackbarを出すとFloatingActionButtonが隠れてしまい、
Googleさん的には非推奨です。
なので、FloatingActionButtonを使用している画面のlayout.xmlの最上位はCoordinatorLayoutにします。

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:fitsSystemWindows="true"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        ~略~
    </LinearLayout>
    <android.support.design.widget.FloatingActionButton android:id="@+id/fab"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_menu_camera" />
</android.support.design.widget.CoordinatorLayout>

上記のようにCoordinatorLayoutで囲ってあげることで、
Snackbarが上がってきた分、FloatingActionButtonが上に移動してくれます。


子供が目を覚ましそうなので、今回はここまで

初めてのRails~環境構築編~

このページの方法で環境を作ると動きません

Winsowsでこの記事のバージョンで動かすにはかなり苦労するようです。
注意の意味を込めてここは残します。
Ruby 2.2.2 の上で Rails 4.2.1 を動かす(RubyInstaller for Windows 編) - Qiita
上記のサイトを参考にすれば解決できるかもです。

今回のゴール

Ruby on Railsの開発環境構築を作る
Ruby + Rails + MySQLをWindow環境で作ります。

前提条件

パーフェクトRuby on Railsをベースにバージョンだけ
Rails使いの友人から指定された物に変更しています。
⇒細かい解説は本に任せてざっくり書いちゃう算段です。

MySQLのインストール

雑で申し訳ないですが、XAMPPを使いました。。。
XAMPP Installers and Downloads for Apache Friends
LAMPでの開発に慣れてる人にはお馴染みかと思います。

※後述のRadRailsを入れるとワンタッチでインストール可能かもです。

Ruby系のインスト―ル

RubyInstaller for Windows
上記サイトからrubyinstaller-2.2.3.exeとDevKit-mingw64-64-4.7.2-20130224-1432-sfx.exeをダウンロード

rubyinstaller-2.2.3.exeはパスの設定をするにチェックを入れてインストール
DevKitは解凍したら以下のコマンドでインスト―ルします。
ruby dk.rb init
ruby dk.rb install


C:\Users\naomi\Downloads>ruby dk.rb init
[INFO] found RubyInstaller v2.2.3 at C:/Ruby22

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

C:\Users\naomi\Downloads>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/Ruby22'
[INFO] Installing 'C:/Ruby22/lib/ruby/site_ruby/devkit.rb'

bundlerのインストール

gemでインスト―ルするのはbundlerだけでbundlerでインストールする物を管理するみたいです。

gem install bundler


C:\Users\naomi\Downloads>gem install bundler
Fetching: bundler-1.11.2.gem (100%)
Successfully installed bundler-1.11.2
Parsing documentation for bundler-1.11.2
Installing ri documentation for bundler-1.11.2
Done installing documentation for bundler after 14 seconds
1 gem installed

Railsのインストール

とうとうラスボスです。
※後述のRadRailsを入れるとワンタッチでインストール可能かもです。

gem install rails -v 4.2.2
⇒悪い友達から5を入れろと言われましたが無視です。
本の通りにやってるけど、これはbundle経由じゃなくて良いのだろうか???
もう少し理解が深まったら修正するかもです。


C:\Users\naomi\Downloads>gem install rails -v 4.2.2
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: activesupport-4.2.2.gem (100%)
Successfully installed activesupport-4.2.2
Fetching: builder-3.2.2.gem (100%)
Successfully installed builder-3.2.2
Fetching: erubis-2.7.0.gem (100%)
Successfully installed erubis-2.7.0
Fetching: mini_portile2-2.0.0.gem (100%)
Successfully installed mini_portile2-2.0.0
Fetching: nokogiri-1.6.7.2-x86-mingw32.gem (100%)
Nokogiri is built with the packaged libraries: libxml2-2.9.2, libxslt-1.1.28, zlib-1.2.8, libiconv-1.14.
Successfully installed nokogiri-1.6.7.2-x86-mingw32
Fetching: rails-deprecated_sanitizer-1.0.3.gem (100%)
Successfully installed rails-deprecated_sanitizer-1.0.3
Fetching: rails-dom-testing-1.0.7.gem (100%)
Successfully installed rails-dom-testing-1.0.7
Fetching: loofah-2.0.3.gem (100%)
Successfully installed loofah-2.0.3
Fetching: rails-html-sanitizer-1.0.3.gem (100%)
Successfully installed rails-html-sanitizer-1.0.3
Fetching: actionview-4.2.2.gem (100%)
Successfully installed actionview-4.2.2
Fetching: rack-1.6.4.gem (100%)
Successfully installed rack-1.6.4
Fetching: rack-test-0.6.3.gem (100%)
Successfully installed rack-test-0.6.3
Fetching: actionpack-4.2.2.gem (100%)
Successfully installed actionpack-4.2.2
Fetching: globalid-0.3.6.gem (100%)
Successfully installed globalid-0.3.6
Fetching: activejob-4.2.2.gem (100%)
Successfully installed activejob-4.2.2
Fetching: mime-types-2.99.gem (100%)
Successfully installed mime-types-2.99
Fetching: mail-2.6.3.gem (100%)
Successfully installed mail-2.6.3
Fetching: actionmailer-4.2.2.gem (100%)
Successfully installed actionmailer-4.2.2
Fetching: activemodel-4.2.2.gem (100%)
Successfully installed activemodel-4.2.2
Fetching: arel-6.0.3.gem (100%)
Successfully installed arel-6.0.3
Fetching: activerecord-4.2.2.gem (100%)
Successfully installed activerecord-4.2.2
Fetching: thor-0.19.1.gem (100%)
Successfully installed thor-0.19.1
Fetching: railties-4.2.2.gem (100%)
Successfully installed railties-4.2.2
Fetching: concurrent-ruby-1.0.0.gem (100%)
Successfully installed concurrent-ruby-1.0.0
Fetching: sprockets-3.5.2.gem (100%)
Successfully installed sprockets-3.5.2
Fetching: sprockets-rails-3.0.1.gem (100%)
Successfully installed sprockets-rails-3.0.1
Fetching: rails-4.2.2.gem (100%)
Successfully installed rails-4.2.2
Parsing documentation for i18n-0.7.0
Installing ri documentation for i18n-0.7.0
Parsing documentation for thread_safe-0.3.5
Installing ri documentation for thread_safe-0.3.5
Parsing documentation for tzinfo-1.2.2
Installing ri documentation for tzinfo-1.2.2
Parsing documentation for activesupport-4.2.2
Installing ri documentation for activesupport-4.2.2
Parsing documentation for builder-3.2.2
Installing ri documentation for builder-3.2.2
Parsing documentation for erubis-2.7.0
Installing ri documentation for erubis-2.7.0
Parsing documentation for mini_portile2-2.0.0
Installing ri documentation for mini_portile2-2.0.0
Parsing documentation for nokogiri-1.6.7.2-x86-mingw32
Installing ri documentation for nokogiri-1.6.7.2-x86-mingw32
Parsing documentation for rails-deprecated_sanitizer-1.0.3
Installing ri documentation for rails-deprecated_sanitizer-1.0.3
Parsing documentation for rails-dom-testing-1.0.7
Installing ri documentation for rails-dom-testing-1.0.7
Parsing documentation for loofah-2.0.3
Installing ri documentation for loofah-2.0.3
Parsing documentation for rails-html-sanitizer-1.0.3
Installing ri documentation for rails-html-sanitizer-1.0.3
Parsing documentation for actionview-4.2.2
Installing ri documentation for actionview-4.2.2
Parsing documentation for rack-1.6.4
Installing ri documentation for rack-1.6.4
Parsing documentation for rack-test-0.6.3
Installing ri documentation for rack-test-0.6.3
Parsing documentation for actionpack-4.2.2
Installing ri documentation for actionpack-4.2.2
Parsing documentation for globalid-0.3.6
Installing ri documentation for globalid-0.3.6
Parsing documentation for activejob-4.2.2
Installing ri documentation for activejob-4.2.2
Parsing documentation for mime-types-2.99
Installing ri documentation for mime-types-2.99
Parsing documentation for mail-2.6.3
Installing ri documentation for mail-2.6.3
Parsing documentation for actionmailer-4.2.2
Installing ri documentation for actionmailer-4.2.2
Parsing documentation for activemodel-4.2.2
Installing ri documentation for activemodel-4.2.2
Parsing documentation for arel-6.0.3
Installing ri documentation for arel-6.0.3
Parsing documentation for activerecord-4.2.2
Installing ri documentation for activerecord-4.2.2
Parsing documentation for thor-0.19.1
Installing ri documentation for thor-0.19.1
Parsing documentation for railties-4.2.2
Installing ri documentation for railties-4.2.2
Parsing documentation for concurrent-ruby-1.0.0
Installing ri documentation for concurrent-ruby-1.0.0
Parsing documentation for sprockets-3.5.2
Installing ri documentation for sprockets-3.5.2
Parsing documentation for sprockets-rails-3.0.1
Installing ri documentation for sprockets-rails-3.0.1
Parsing documentation for rails-4.2.2
Installing ri documentation for rails-4.2.2
Done installing documentation for i18n, thread_safe, tzinfo, activesupport, builder, erubis, mini_portile2, nokogiri, rails-deprecated_sanitizer, rails-dom-testing, loofah, rails-html-sanitizer, actionview, rack, rack-test, actionpack, globalid, activejob, mime-types, mail, actionmailer, activemodel, arel, activerecord, thor, railties, concurrent-ruby, sprockets, sprockets-rails, rails after 654 seconds
30 gems installed

IDEのインストール

貧弱なのでAptanaを選択しました。
vimじゃなくてすいません。言語を学ぶ事を優先したかったのです。

Aptana
上記からダウンロード
⇒Windows10だとchromeとEdgeではダウンロードできませんでした。。。
IEのみ可(把握してる中では)

また、AptanaStudioをインストールしようとしていたのですが、
CRCエラーでインストール失敗。。。
RadRailsをインストールしてみました。
⇒初体験なので、違いなどは分かりません。。。

環境は整ったので、今回はここで終了します。

【Android】zxingでバーコードを読み込む

ソースコード

build.gradleの設定
dependenciesに以下を記載

    compile 'com.journeyapps:zxing-android-embedded:3.0.3@aar'
    compile 'com.google.zxing:core:3.2.1'

読み込み画面を呼び出す(Activity)

        IntentIntegrator integrator = new IntentIntegrator(this);
        integrator.initiateScan();

読み込み画面を呼び出す(Fragment)

        IntentIntegrator integrator = IntentIntegrator.forSupportFragment(this);
        integrator.initiateScan();


読み取った結果の受け取り

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        String code;

        if (null != intentResult && (code = intentResult.getContents()) != null) {
            Toast.makeText(this, code, Toast.LENGTH_SHORT).show();
        }
    }

サンプルではToastに読み込んだバーコードを表示します。

今回のサンプルソース一式は以下にあります。
https://github.com/k-shimoju/android/tree/master/Zxing