dialog()の主なパラメータ
width
幅
height
高さ
autoOpen
ダイアログを自動的に開く
model
モーダルダイアログにするか選択
falseなら
モードレスダイアログになる
show
ダイアログを開くときのアニメーション効果
hide
ダイアログを閉じるときのアニメーション効果
buttons
ダイアログで表示するボタン
ちなみに、buttonsパラメータは
ハッシュによる追加で
ボタン名と
クリック時の処理を設定できる
コードにすると
buttons:{
ボタン名:function(){クリックしたときの処理},
....
}
という構文
例えば、よく見かける
ダウンロードか、閉じるという画面ダイアログなら
buttons:{
'ダウンロード',function(){
location.href='http://jquery.com/download';},
'閉じる',function(){
$(this).dialog('close');
}
これで、ダウンロードがクリックされたら
URLに移動され
閉じるがクリックされたら
ダイアログが閉じるようになる
jQueryUIでは
メソッドに特定のキーワードを渡すことで
あらかじめ決められた処理を行える
例えば
$(this).dialog('close');
なら
現在のダイアログになる
$(this)
を
閉じるという意味になる
closeは閉じるという意味
スポンサーサイト
モーダルダイアログ
モーダルダイアログは
その画面を閉じるまで
その他の動作ができなくなるダイアログのこと
これは、ライセンス確認画面とかで使ったりします
モーダルダイアログは
一般的にdiv要素で定義します
ダイアログの内容
というかんじ
重要なのは
jQueryUIから操作できるように
id属性の明記と
title属性にタイトルをつけてタイトルバーに表示すること
これができたら
モーダルダイアログの機能を適用
これには
dialog()
を使う
dialog()の構文は
$(ダイアログを示すセレクタ).
dialog({
パラメータ名:値,
....
})
サンプルにすると
$('#dialog').dialog({
width:600,
....
});
となります
ダイアログを表示する様々な機能は
{
パラメータ名:値,
....
}
というハッシュ形式で指定
ハッシュはjQueryUIや
ほかの様々なjQueryプラグインで多用するので覚えておくと便利です
jQueryUIの利用 jQueryUIは jQueryにより動くライブラリなので 先にjQueryを読み込まないとダメ つまり、コードは上から実行されるから 先に jquery-バージョン.min.js を、書いてから jquery-ui-バージョン.min.js を書くこと あとは以下のようなコードで jQueryUIを呼び出せばok 構文は $(UIの適用先セレクタ).機能名(パラメータ,...)
AndroidでSQLite Androidアプリで DBのSQLiteを操作するには android.database.sqlite.SQLiteOpenHelper抽象クラス を継承した Helperクラスを使う SQLiteOpenHelperは SQLiteをオープンするためのHelperクラスで DB作成 DBスキーマのバージョン管理も行う
ファイルへの保存について ファイルへのデータ書き込みには まず openFileOutput()を使い FileOutputStreamオブジェクトを取得 openFileOutput()の 第1引数にはアクセスしたいファイル名 第2引数に処理モード定数を設定 ファイル処理モード定数は MODE_PRIVATE 他のアプリからアクセス不可 MODE_WORLD_READABLE 他のアプリから読み込み可 MODE_WORLD_WRITABLE 他のアプリから書き込み可 MODE_APPEND 既存ファイルに追加書き込み プリファレンスとほほ同じだけど 既存ファイルに追加書き込みできる MODE_APPENDが増えている 定数とかの設定ができたら 書き込み処理をする FileOutputStreamオブジェクトを引数にして BufferedWriterクラスのオブジェクトを生成 このBufferedWriterオブジェクトの write()に 書き込みたいデータを文字列で渡し ファイルに出力 newLine() を使えば改行を入れることができる 最後に close() でバッファにたまっている出力データを ファイルに書き込み、ファイルを閉じる ファイルからのデータ読み込みは openFileInput() を使い FileInputStreamオブジェクトを取得 そのFileInputStreamオブジェクトを引数にして 読み込み処理を行う InputStreamWriteクラスの オブジェクトを生成 生成したInputStreamWriteオブジェクトを 引数にして BufferedReaderクラスのオブジェクトを生成する そして BufferedReaderの readLine()を使って バッファに取り込まれたデータを 1行ずつ読み込む ファイルデータの削除には deleteFile() を使う deleteFile()で ファイルのデータが全て削除される ファイルの読み込み、書き込み、削除には 全て例外処理が必要なため、 try{ 処理 }catch() 例外処理 } というように処理の記述が必要
プリファレンスの利用 プリファレンスを利用するには プリファレンスにアクセスするためのメソッドを提供するインターフェース SharedPreferencesの オブジェクトを取得する必要がある SharedPreferencesオブジェクトは Contextクラスの getSharedPreferences() で取得する この第1引数に アクセスしたいファイル名 第2引数に 処理モードの定数を設定する プリファレンスの処理モード定数は MODE_PRIVATE 他のアプリからアクセス不可 MODE_WORLD_READABLE 他のアプリから読み込み可 MODE_WORLD_WRITABLE 他のアプリから書き込み可 データの書き込み、変更、削除には SharedPreferences.Editorクラスのインスタンスを SharedPreferencesの edit()で取得 データの保存には SharedPreferences.Editorオブジェクトの putString()に 保存するデータのキーと値を設定し commit() で プリファレンスファイルに保存する putString()は 第1引数にキー 第2引数に保存する値を設定 putString()のほかにも putInt() putLong() putFloat() putBoolean() があるので、保存したいデータ型により使い分けができる SharedPreferencesオブジェクトを取得したあと SharedPreferencesオブジェクトの getString() でデータ取得 getString()の 第1引数に取得したいデータのキー 第2引数にデータが取得できなかった場合の値 を設定 プリファレンスファイルのデータを全て削除したいなら SharedPreferences.Editorクラスの clear()を使う これは SharedPreferencesオブジェクトや SharedPreferences.Editorオブジェクトを取得したあと clear()を実行する 全部ではなく 指定したデータのキーだけ削除したいなら remove()を使う これは 引数にキーを指定する データを保存するときと同じように 削除するときにも commit()を実行するのを忘れないように注意
プリファレンスについて プリファレンスは javaのMapインターフェースのように データとキーを組み合わせて保存する 保存データは /data/data/パッケージ名/shared_prefs というディレクトリに ファイル名.xml という名前のXMLファイルで保存する このXMLファイルが プリファレンスファイル プリファレンスは データ量やデータ形式に制限があるため いくつかの設定値の簡易保存などに、使われる
データ保存 Androidでは5つのデータ保存方法がある プリファレンス 端末内部の記憶媒体に キーと値の組み合わせで保存 ファイル 端末内部の記憶媒体に保存 データベース デフォルトで搭載されているSQLite DBへ保存 外部メディア SDカードなどに保存 ネットワーク上のサーバー そのままの意味 クラウドに保存 Dropboxとかがこれにあたる
バインドを使わないサービス まず、サービスクラスを準備する サービスクラスは android.app.Service抽象クラスを継承して定義する ソースにすると extends Service サービスクラスのイベントハンドラは以下のとおり onCreate 初めてサービスが起動したとき呼ばれる 複数サービス起動の場合は初回だけ呼ばれる onStart startService()でサービス開始のとき呼ばれる onBind bindService()でサービス開始のとき呼ばれる onUnbind サービスのバインドを解除するとき呼ばれる onRebind サービスと再度バインドするとき呼ばれる onDestroy 停止状態から破棄される直前に呼ばれる 注意点としては バインドを使わなくても onBind()の実装はなぜか必須ということ そして、AndroidManifest.xmlに serviceタグの設定が必要
Androidでのサービス機能は 画面を持たず、バックグラウンドで独立して動作するプログラム これはLinuxのサーバーのようなもの この機能を使えば、 長いダウンロード処理とか 音楽再生などを画面処理から切り離して動作させられる 例えば、音楽を聞きながらWebブラウザー閲覧などができるようになる サービスの実装方法は2つ startService()を使う方法 バインドを使う方法 まず、startService()から これは アクティビティやサービスから サービスを呼び出す方法 Activityクラスの startService()でサービス起動 stopService()でサービス停止 一番簡単な実装方法だが 欠点として アクティビティから行えるのは サービスの起動と停止のみ もうひとつのバインドについて こちらは アクティビティとサービスを明示的に 結びつけることで サービスの起動/停止だけでなく アクティビティとサービスの相互操作が可能 アクティビティとサービスをバインドするには アクティビティとサービスのの両方に AIDLファイルを用意する AIDLは Android Interface Definition Language の略 このAIDLファイルに定義した インターフェースを使うことで アクティビティとサービスが互いにやりとりできるようになる
暗黙的インテントの場合、 アクション定数を引数にインテントを生成 Intentの setData() で、URIを設定 startActivity()で次のアクティビティを起動する 指定したアクション定数やURIに合致する インテントフィルターを持つアプリが これでよびだされる 暗黙的インテントで 電話やWebブラウザー標準のアプリも呼び出せる 電話なら アクションは android.intent.action.DIAL URIは tel:電話番号 Webブラウザーなら アクションは android.intent.action.VIEW URIは http://ホスト名/パス 明示的インテントでも 暗黙的インテントでも アクティビティを起動するのに startActivity() のほかに startActivityForResult() が使える startActivityForResult() を使うと 次のアクティビティが終了するときに 最初のアプリに値を戻せる
暗黙的インテント これは主に他のアプリ呼び出しに使う これを使うにも Androidmanifest.xmlの編集が必要になる Androidmanifest.xmlに インテントフィルターという 暗黙的インテントで呼び出すための条件を記述する やり方は、対象の activityタグの中に intent-filterタグを設定 そして、この intent-filterタグの中に判断材料となるタグを設定する
Ajaxは サーバーとの通信をjava scriptで行う技術 Ajax通信ではドメインをまたがって要求することができない サーバーから取得したデータをそのまま ページに反映するには load() を使う $.getJSON() とJSONP を使うことで ドメインをまたがって通信できる ajaxStart ajaxStop ajaxError などのAjaxイベントを利用することで Ajax通信中にアプリ独自の、動作を挟める
過去に買った参考書籍ではまること それは、バージョン違いにより再現できないこと 今回もこれに引っかかりました Android4.0からだと Android2.3までとはUIが変わるため ハードウェアキーの メニューボタンがありません このため、Android2.3対応の書籍で アプリ作成してみると メニューボタンがなく、はまることがあるので 注意が必要です http://andronavi.com/2011/12/145919 にもこれについての解説が載っていました
SQLiteのデータ型 INTEGER 符号付き整数 REAL 浮動小数点数 TEXT テキスト BLOB バイナリデータ Androidでは以下のクラスを使い SQLite DBを利用する SQLiteOpenHelperクラス DB作成、 スキーマのバージョン管理をするための 抽象クラス このクラスを継承して DB生成、アップグレード処理を実装する SQLiteDatabaseクラス insert() update() などDBに対するレコード操作用メソッドを提供するクラス
SQL DBの利用 まずはSQLiteデータベースについて SQLite データベースは 一般的なRDBMS リレーショナルデータベースマネジメントシステム に比べ いくつかの特徴的な仕様を持つ 一般的なRDBMSといえば MYSQLあたりが有名 SQLiteは データの保存に単一ファイルのみを使用する 軽量のRDBMSで MYSQLやPostgreSQLよりも Microsoft Accessに近い アプリに含む形で利用されることが多く iPhoneでも SQLiteは使われている SQLiteは Webアプリ開発に使うPHPとか Adobe AIRでも使える SQLiteのデータ型はシンプルで ファイル型のDBなので 携帯端末でも高速動作可能 ただ、SQLiteの場合 データ型といっても、他のRDBMSとは違い データ登録時に厳密なデータ型のチェックをしない このため、 データ型と違うタイプのデータも登録できてしまう 登録されているデータを評価するときには データ型が使われる
AsyncTaskによる非同期実行 AsyncTaskを使うと バックグラウンドで処理を行い その結果をメインアクティビティのUIに反映させることができる AsyncTaskは Params Progress Result の3つのパラメータを持つ ちなみに、パラメータの意味は Params タスクが開始されるときに送られるパラメータ doInBackground()の引数 Progress バックグラウンド処理の進捗状況を示すための onProgressUpdate()の引数 Result バックグラウンド処理が終わったときに実行される onPostExecute()の引数 また、AsyncTaskをexecuteすると 4つのメソッドが実行される 実行されるメソッドは4つ onPreExecute() 実行前の準備処理 例えばインジケータセットアップ doInBackground(Params...) バックグラウンドで実行したい処理 onProgressUpdate(Progress ...) バックグラウンド処理の進捗状況を UIスレッドで表示するなら記述 onPostExecute(Result) バックグラウンド処理が終わり UIスレッドで反映させる処理 AsyncTaskを使うにはルールがあるので注意 このルールは AsyncTaskのインスタンスはUIスレッドで生成 AsyncTaskの execute()は UIスレッドから呼び出す onPreExecute() onPostExecute() doInBackground() onProgressUpdate() は手動で呼び出せない AsyncTaskは1回だけ実行できる2回目だと、例外になってしまう
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
というエラーが発生
これは、バックアップから作成したGMOクラウドへ接続したときのエラー
Please contact your system administrator.
Add correct host key in /home/wiki/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/wiki/.ssh/known_hosts:5
と
エラーがでているので
vim .ssh/known_hosts
でファイルを開き 5行めを削除
これで無事接続可能になりました
テーマ : Linux
ジャンル : コンピュータ
Androidアプリのビュー部品。横に並べるため LinearLayout の android:orientation を horizontal に設定 ちなみに horizontalは横並び verticalは縦並び この中に、ToggleButtonを設置 これはjQueryのトグルボタンと同じ効果 android:textOff へはオフ状態のボタン表示メッセージ android:textOn は オン状態のボタン表示メッセージ あと、経過時間もつけたいので タイマー表示に使える Chronometer を設置しました 今回、main.xmlでマップをつけてみましたが API_keyは string.xmlに記述し 変数のような扱いにしました この方がメンテが楽になります string.xmlで 注意すべきは ダブルクォート "の取り扱いです 直接、xmlで記述すると " となりますが リソースの方で編集すると " ではなく "eになります 普通に文字列で表すには問題ないのですが なにか引数扱いにするなら 注意が必要です
http://yoshiiz.blog129.fc2.com/blog-entry-44.html を参考に sftpコマンドを、使ってみました 接続クライアントは ubuntu 12.04 64bit です GMOクラウドでCentOSをつかうときに 当初、scpコマンドを使う予定でしたが 最小構成のためscpがインストールされておらず yumコマンドも使えないので sftpコマンドで転送しました 残念なことに sftpで接続したときに 日本語ディレクトリは入力できないため 最初に cd ダウンロード で移動しておくか、 カレントディレクトリに転送するファイルを 移動させておく必要があります なお、現在セキュリティーのため ポートを変更しているため 接続には sftp -oPort=ポート番号 ユーザ名@IPアドレス で接続となります ファイルアップロードには put ファイル名 となります
現在地描画の手順 現在地を描画できるように MyLocationOverlayクラスの インスタンス作成 onProviderEnabled(LocationManager.GPS_PROVIDER) でGPS有効化 enableMyLocation() で自分ポイントの追跡有効化 runOnFirstFix()で 最初に位置情報が確定したときに 実行するコード指定 getMyLocation()で 自分ポイント取得 animateTo()で 指定座標に移動 MapViewに Overlayを追加し MapView.invalidate()で再描画
タッチイベントの用語解説 タップ 画面を軽く叩く 別名、シングルタップ ダブルタップ タップを素早く2回行う フリック 画面上を軽く払うように指を動かし 縦や横にページ移動 あと、ソフトウェアキーボードの フリック入力にも使う ピンチイン 画面を狭めるようにつまむ 縮小に使う ピンチアウト 画面を広げるように二本指で操作 こっちは拡大に使う マルチタッチ 同時に複数の個所にタッチ
Androidでよく使う単位は dp と sp dpは Destiny independent Pixels spは Scaled Pixel なぜ、pxではないかというと pxは画面の実際のピクセル数 つまりドット単位なので 端末により1インチあたりのピクセル数が違うと 実際に表示されるサイズも変わってしまうから これに対して dpなら 画面の表示密度から計算して求めるので 表示密度が違っても同じようなサイズを維持できる spも同様に画面の表示密度で計算するけど こちらは文字のフォントサイズの指定に使う
タブレイアウトを使うと 複数のタブにUI部品を配置できる Androidでタブを使う方法は2つ Activityを継承する方法 と TabActivityの継承 まず、Activityの継承だと タブごとに別々のアクティビティを割り当てる TabActivityの継承の場合 同じアクティビティで タブごとにビューを切り替えられる
タブレイアウト使用時の注意点 レイアウトのルートノードはTabHost であること TabHostのidは @android:id/tabhost にする Tabhostは タブを表示するためのTabWidget と コンテンツを表示するためのFrameLayoutを含む TabWidgetのidは @android:id/tabs にすること FrameLayoutのidは @android:id/tabcontent にすること
センサーを使うには getSystemService()で SensorManagerを取得 SensorManagerの getSensorList()に TYPE_ACCELEROMETER 加速度センサーを指定し、リストを得る このリストの中から list.get(0) で加速度センサーを取得 あえて、指定しているのは 機種により複数のセンサー搭載もあるから onResume() で SensorEventListenerを登録 登録は mSensorManager.registerListener() onStop() でイベントリスナーの登録解除 解除は mSensorManager.uNregisterListener() ちなみに、 SensorEventListenerを implicationしたら 以下のメソッドも実装すること public void onAccuracyChanged(Sensor sensor,int accuracy) public void onSensorChanged(SensorEvent event) onAccuracyChanged() は センサー搭載の精度が変化した時に、呼び出される onSensorChanged()は センサーの値が変化したら呼び出される onSensorChanged() の引数 event のvalues配列には各軸の値があり values[0] がX軸 values[1] がY軸 values[3] がZ軸 になります ちなみに、定数も定義されているので X軸なら SensorManager.DATA_X Y軸なら SensorManager.DATA_Y Z軸なら SensorManager.DATA_Z
加速度についてのメモ 加速度は 一定時間ごとに速度がどれだけ増加するか を表す割合のこと 単位時間あたりの速度の変化率のこと 一般的にはm/s meter per second per second という単位で表現されるけど 加速度は重力の影響を受ける 重力と加速度による慣性力を区別することはできない 一般的だと バスや電車で 発車や停車のとき、加速度による慣性力を体験してます ちなみに、地球の重力により 物体が上から下へ落ちるときの加速度は 重力加速度といって Gで表されます よく、ラノベとかで何Gとかでたりします 重力加速度は 一般では 9.8m/s だけと 厳密には緯度により変わるため 日本の場合、北海道と沖縄では 微妙に異なります 北海道のほうが大きく 沖縄の方が小さくなります 重力加速度は 物体を静止状態から自然落下させたときに 1秒後の落下速度が9.8m/sになること 加速度はX Y Zの3軸のベクトルで取得可能 ちなみに、加速度はAndroidアプリ作成に使います
Androidで音感知のアプリ作成で サンプリングレートの設定を間違えたらエラーになりました 最初に設定したのは500にしてしまったのが原因でした 今回、HTC Jでは サンプリングレートは Xperia acroと同じく 44100Hzでした 数値が小さいと アプリ起動しても予期せぬエラーがでましたとなり強制終了してしまいます
サーフェイスビュー SurfaceViewクラスを使うと UIスレッドから独立して描画を行える 通常のUIスレッドより高速描画できるので ゲームやマルチメディアに向く カメラ画像化のプレビューにも SurfaceViewクラスが使われる
サンプリングレートとは サンプリングレートはサンプリング周波数のことで アナログ信号からデジタル信号への変換である(AD変換) を 1秒間に何回行うかを示す数値で 単位はHz ちなみに、44100Hz 44.1kHzは CDに使われる