KotlinでAndroid
KotlinでAndroid
初めての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と言うプロジェクトをDBMSをMySQLで作ると言う意味です。
bundle installを別で実行する場合は以下
rails new sample -d mysql --skip-bundle
次にscaffoldでdaoやコントローラを全自動作成します。
userテーブルにname,user_id,passwordがある事を指定しています。
rails g scaffold user name:string user_id:string password:string
※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をしたら正常に起動してくれました。
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:/Ruby22Initialization 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
【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