[Android]ImageButtonを透過にする

レイアウトのxmlでImageButtonにイメージを貼り付けると、ボタンにイメージが張り付く形になる。

ボタンボタンの表示を無くして、貼り付けたイメージだけを表示したい場合、バックグラウンド属性を@nullに設定する

具体的には

TableLayoutで、列をめいっぱい拡張する設定

行に複数のビューを設定した時に、まだ横幅があいているときに、

ある列をめいっぱい広げる設定

TableLayoutのインスタンスの

setColumnStretchable を使う

Subversionの認証をRedmineのアカウントで認証する

今回はhttpdをコンパイルして入れた環境で

Subversionの認証をRedmineのアカウントでやりたい。

という事で、不真面目なやり方で実現。

CentOSにはあらかじめ少し古いhttpdが入っているため

まずはyumでmod_auth_mysqlを入れる。

そうすると

/etc/httpd/modules にmod_auth_mysql.soファイルが入るので

このファイルをコンパイルして入れたhttpdのmodulesにコピーする

cd /etc/httpd/modules

cp mod_auth_mysql.so /usr/local/apache/modules

次に

moduleファイルをロードするのだが

ロードする際に

httpd.confのLoadModuleのリストの一番上に書くのが問題が起きないようだ。

mod_auth_basic.soより前にmod_auth_mysql.soを読み込む必要があるらしい。

Subversionのリポジトリの設定は

とする。

指をスライドしたときのMOVEイベントを取る

基本的に画面をタッチしたり指をスライドしたりした時のアクションは

onTouchEventで取る。

最後のreturnは

super.onTouchEvent(event);

のままだと、指を動かしたときの座標とMOVEアクションがとれず、指を離したときにonTouchEventが解放されるようだ。

なので、指のスライドを検知する場合は、return trueとする必要がある。

これはSurfaceViewで画面描画を別スレッドにした場合に、特に影響する。

かも。

Toastとは

Toastとは

という感じで、「beep bap」と表示されている枠のことです。

画面に表示されて、数秒で消えていきます。

「データを登録しました」みたいなメッセージを一時的に表示するのに最適かもしれません。

で、使い方ですが

となります。

一番目の引数の

FormExample01.thisというのは、アプリのメインクラスのコンテキストです。

2番目の引数は

表示する文字ですね。

3番目は表示する時間です。

LENGTH_SHORTで、短時間

LENGTH_LONGで、長時間

あと、makeTextというのは、インスタンスを返すので、show()で表示してあげる必要があります。

選択状態を持つコントロールのアイコン設定

タブに表示するアイコン画像など、選択状態で画像の色が変わるような作りにする場合

drawableのフォルダに

  • test_icon.png
  • test_icon_selected.png

という二つのイメージファイルを使うとする

そして、test_icon.xmlというファイルを作り、ファイルに以下のように設定すれば、選択されたときに表示する画像と、普段表示する画像を定義できる。

これを処理から呼び出す場合は

という感じで呼び出す

Android画面のスクリーンショットをとる

ADB USB Driverを入れてあれば

eclipseのDDMSパースペクティブの画面でスクリーンショットをとることが出来ます。

Devicesビューにあるボタンで「Screen Capture」を押せば、画面が開きます。

その画面で「Save」ボタンを押すことでファイルを作成出来ます。

Androidアプリ内でファイルを作成した時に、ファイルを参照するには

Androidアプリ内でファイルを作成した場合

フルパスが

/data/data/<パッケージ名>/files/<ファイル名>

となります。

これを見るには、

eclipseで

DDMSパースペクティブを開く

File Explorerを開く

パスをたどってファイルを選択する

File Explorerの右側のボタンで「Pull a file from the device」をクリック

Redmineを立てたい

Redmineとはプロジェクト管理ツールで、tracなどと同等の物か、それ以上なので

自マシンに入れてみようと思う。

※本当はすでに何年も前から使っているが、記事として書くため

MySQLをインストール

今回はyumで簡単に入れてしまう

Rubyをインストール

http://www.ruby-lang.org/ja/

から1.8.7の最新をダウンロード

ダウンロードしたものを解凍

インストールパスは

/usr/local/rubyにする

/etc/profile

export PATHしているようなところの直前で

を追加

gemのインストール

http://rubygems.org/

よりダウンロード

インストールする

Redmineをダウンロード

http://www.redmine.org/

/usr/local/redmineに展開

gemでmysqlをインストール

gemでRails 2.3.5をインストール

MySQLにredmine用データベースを作成

Redmineの設定

database.ymlファイルを開いてproduction部分のデータベース名、データベースアカウントの情報を修正

rake config/initializers/session_store.rb

rake db:migrate RAILS_ENV=production

rake redmine:load_default_data RAILS_ENV=production

以下のように表示されるので、jaを入力してリターン

Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja

これで初期設定は完了

gemでPassengerをインストール

passengerのコンパイル

と聞かれるので、リターン

コンパイルが終了すると、設定ファイルの書き方が表示される

/usr/local/apache/conf/extra/passenger.confファイルを作成

httpd.confファイルの編集

httpd.confの最後に

を追加

httpd.confの中のDocumentRootに設定してあるディレクトリに移動

redmine用のシンボリックリンクを作成

httpdサーバの起動

http://***.***.***.***/redmineにアクセスして表示されれば完了

初期の管理ユーザは

admin/admin

だそうです。

a

SVNで、trunkからbranchesへ、またはbranchesからtrunkへ切り替える際に間違えて一つ上のディレクトリなどでswしてしまったときの対象法

SVNで、trunkからbranchesへ、またはbranchesからtrunkへ切り替える際に

svn sw http://localhost/test/trunkなんてやったりしますが

この時、trunkを抜かしてしまうと、大変なことになります。

もしやってしまったら、慌てずに再度正常なURLでsvn swコマンドを実行します。

もし、ディレクトリが上書きできないというエラーが出たりしたら

svn sw –force http://localhost/test/trunkという感じで強制的に実行することが出来ます。

これで、SVNコマンド自体は正常に終了すると思います。

が、これで終わりません(たぶん)

svnコマンドをctl+cなどで中断している場合、svnワークスペース内のすべてが切り替わってるわけではありません。

もしかしたら、ディレクトリの情報は正常でも、配下のファイルが別を見てる可能性があります。

なので、svn upもかけておきましょう。

svn swは同じところを何度もたたいてもエラーにはならないので

svn swとsvn upを交互に何度かたたいたりして、両方問題なければ、修復完了です。

AndroidからGoogleMapにアクセス

AndroidからGoogleMapにアクセスするには、MapViewクラスを使用する。

GoogleMapは、Androidから見たら外部サイトなので、uses-permissionを設定する必要がある。

eclipseでの設定は

AndroidManifest.xml ファイルを開く。

Permissionsタブを開き、Addボタンを押す

Uses Permissionを選択してOKボタンを押す

リストに出たUses Permissionを選択し、右のNameに「android.permission.INTERNET」を入力

※Uses Permissionに設定できるパラメータはhttp://developer.android.com/reference/packages.htmlを参照

AndroidManifest.xml を保存

GoogleMap用のライブラリを設定

AndroidManifest.xml のApplicationタブを選択

Application NodesのAddボタンをクリックし「Uses Library」を選択

リストに追加されたUses Libraryを選択し、右側のNameに「com.google.android.maps」を入力

AndroidManifest.xml を保存

Subversionのサーバを1.6.*系で立てたい

Subversionのサーバを立てたい。

CentOSのパッケージでは1.4.2とかいう古いものであまり使いたくない。

ということで、Subversionをソースからコンパイルすることにした。

  • Subversionは1.6系の最新を使う予定。
  • Apacheは2.2系の最新を使う予定。
  • berkeley-dbは4.4系の最新を使う予定。
    ※Subversionが求める最新が4.4あたりだった気がするので。
    ※あと、apacheとsubversionでbdbのバージョンが合わないとうまく動かない

ということで、まずはberkeley-dbをダウンロード

Oracleサイトから。

ダウンロードしたら解凍

こいつのコンパイルはほんの少しだけ面倒で

とする必要がある。

次に/etc/ld.so.conf.dにberkeleyDB.4.4.confファイルを作成し

を追加する。追加したら

を実行

あまり面倒ではない????

まぁ良い。

そしたら、Apacheのインストール

httpd-2.2.17.tar.bz2をダウンロードし解凍する

次はSubversion

SubversionはApacheのプロジェクトになったので、Apacheサイトからダウンロード

以下の二つが必要

  • subversion-1.6.15.tar.bz2
  • subversion-deps-1.6.15.tar.bz2

二つをまず解凍

これで、subversion-1.6.15というディレクトリが出来上がる。

そしたらコンパイル

※with-berkeley-dbオプションはBerkeleyDBの標準インストールディレクトリを参照してリンクする。(今回は/usr/local/BerkeleyDB4.4)

マシン起動時にapacheを起動するようにする

最初の時点でhttpdというものはパッケージで入っているので

この起動用設定ファイルを流用する

/etc/init.d/httpdを/etc/init.d/apacheにコピー

/etc/init.d/apacheを開き

apachctlのパスを/usr/local/apache/bin/apachctlに変える

pidのファイル名を/usr/local/apache/logs/httpd.pidに変更

ロックファイルのファイル名を変更

最後に起動項目にapacheを追加

apacheを自動起動に設定

AndroidからGoogleMapにアクセスするための手続き

AndroidからGoogleMapにアクセスするには、Android maps APIという所でサインアップしてキーを取得する必要がある。

http://code.google.com/intl/ja/android/add-ons/google-apis/maps-api-signup.html

このサイトで、サインアップをする。

「My certificate’s MD5 fingerprint」という項目に入れる内容は

JDKに付属のkeytoolというもので生成する

実行すると、以下のように出力される

一番下の「証明書のフィンガープリント (MD5)」に書いてあるキーがフィンガープリントになる。

これを「My certificate’s MD5 fingerprint」に入れる。

Androidアプリからネット上にあるサイトを参照するには

WebViewのloadUrlにhttps://gendosu.jp/と書いた場合

外部との通信が必要になるので

パーミッションの設定を行います。

AndroidManifest.xmlファイルのmanifestタグに

を追加する必要がある。