fc2ブログ

AndroidアプリのHTTP通信

HTTP通信処理

Androidアプリから
Webサーバーに接続するには
HTTP通信を使う

HTTP通信でのデータのやりとりは
GET
POST
の2種類があり

GETなら、サーバーにリクエストするときに
http://xxx.co.jp/yyy?id=hoge
というように、
URLのあとに
?

id=hoge
を付けた
クエストリングと呼ばれる形式で送信する

POSTの場合、
GETのように、URLの一部ではなく
本文として送信される

GETは
名前の通り、検索キーワードを送信して
検索結果を取り出すような処理のために使う

POSTは
メッセージ書き込みとかデータ更新に使う

GETとPOSTは
PHPでよく使うので、機会があれば
こちらの言語も勉強すると
より理解が深まります
スポンサーサイト



Javascriptのソース解説

Javascriptの命令文の一部

JavascriptでもPHPでも、ソースコードを読むためには
意味が分からないとと書けないので
解説メモです

まずDOM関連
getElementById()
特定のIDの要素を抽出する

querySelectorAll()
セレクタにマッチする要素を抽出する

getAttribute()
要素の属性を読み込む

appendChild()
小ノードとして追加

innerHTML
HTMLを出力

innerText,textContent
テキストのまま出力


続いて、イベント関連

addEventListener()
イベントリスナー追加

preventDefault()
ブラウザの標準動作を禁止


続いて、CSS関連
opacity
不透明度

backgroundColor
背景色

position
位置の指定方法

width
横幅

height
縦幅

left
左の座標

top
上の座標

Androidのitemタグの属性

Androidのitemタグの属性

android:color
色の設定

android:state_focused
フォーカスが当たっている状態はtru
当たっていない状態ならfalse
を設定

android:state_selected
選択されている状態はtrue
選択されていないならfalse
を設定

android:state_checkable
チェックできる状態はtrue
チェックできない状態はfalse
を設定

android:state_checked
チェックされている状態はtrue
チェックされていない状態はfalse
を設定

android:state_enableed
有効のときはtrue
無効のときはfalse
を設定

android:state_window_focused画面にフォーカスが当たっている状態はtrue
フォーカスがあたってない状態はfalse

HTML5での要素の変更点

HTML5での要素の変更点

b要素
商品名などのキーワード

em
強調

strong
重要

i
車や船の名前

ruby
漢字とかのふりがなをふる

time
日付、時間を示す

mark
特定のテキストをハイライト表示する

指定した時間にアプリ起動

指定下時間にアプリ起動処理

Androidでは、
常駐プロセスのように、常にバックグラウンドで処理を動かすには
サービスを使う

指定した時間にアプリ起動するなら
AlarmManager
をつかう

AlarmManagerなら
端末がスリープ状態でも
指定した時間になればアプリ起動することができる

また、起動の間隔を設定すれば
毎日決まった時間にアプリ起動ができる

指定した時間でアプリ起動する流れは以下のとおり

まず、起動するアプリを指定した
PendingInternt
のインスタンス、起動時間や間隔を
AlarmManagerに設定

これで、指定した時間になると
設定したアプリが起動

停止したいときには
AlarmManagerのcancel()で起動設定解除
する

HTML5と画面分割

HTML5では
以前はdivタグでやっていた画面分割を
新しく定義された要素で分割が可能

articleタグで
画面の左側

sectionタグで
画面中央

asideタグで
画面の右側

ちなみに、画面の中央には
ブログ記事とかを書いたりするので
section要素でマークアップしている

このセクションという仕組みは
HTML5から追加されたもので
セクションを本に例えると
本の章とか節みたいになる

ちなみに、sectionの中に
さらに複数のsectionがあっても問題ない

セクション内では
HTMLでおなじみの見出しをつける
h1~h6タグが使える

本文と関係のある補足的なコンテンツ
例えば、ブログ記事の関連リンクとか
自作アプリとか、開発したもののバナーとか
そういうのは
article要素じゃなくて
右側に表示できる
aside要素のところに書く

あとは、最後にフッターをマークアップ

フッターには
コピーライトとか
よく一番下に書いてあるのを書くところ

ヘッダー
コンテンツ
フッター
の組合せは
jQuery mobileでも使うので
覚えておくと便利

ちなみに、
ヘッダーは見出し
コンテンツは記事本文
フッターは下にかくもの
と考えるとわかりやすい

スマホ向けサイトをみると
わかりやすい

HTML5で画面を横に3分割

HTML5で画面を横に3分割

HTML5では
以前はdivタグでやっていた画面分割を
新しく定義された要素で分割が可能

articleタグで
画面の左側

sectionタグで
画面中央

asideタグで
画面の右側


これを一番使うのは、ブログみたいな使い方

例えば、
articleにはブログ記事の見出し

sectionには
ブログ記事本文

asideには
広告とか、アフィリエイトのリンクを貼る

というかんじ

HTML5 とそれ以前の見分け方

HTML5 とそれ以前の見分け方

ソースをみて、HTML5かどうかを見分けるには
<!DOCTYPE html>
となっているかをみる
書いてあるのは、だいたい先頭の部分

<!DOCTYPE HTML public....>
というように、長いなら
HTML5ではない

違いは、使える機能が大幅に変わること
単純そうだけど、かなり重要

HTML5のAPI

HTML5のAPI

Canvas
ピクセル単位でのグラフィック描画に使う
ただし、Javascriptがないと機能しない

SVG
こっちもグラフィック描画
でも、単体でも使えるところが違う

Web Workers
複数のプログラムを並列処理する
ちなみに、Javascriptは1つしかできない

Web Storage
Javascriptでデータを保存する
大容量データの保存、読み出しも可能


Geolocation API
位置情報の取得
ただし、座標取得だけなので
実用化するときには
マップ関連のAPIと組み合わせることが多い

Video & Audio
映像や音楽の取り扱い
スクリプトで制御することもできる

File API
ローカルファイルを扱うための機能
ただし、
セキュリティ関連の縛りで
アクセスできるのは
ユーザが選択したものだけになる

Drag&Drop API
表示されている画像や文字のドラッグ&ドロップ

Web Socket
直接サーバーとやりとりする機能
ソケット通信
主な用途は、ゲームやチャット

Indexed Database
ローカル側でデータベース使用
Key Value Store
からなるKVS方式で、処理を行う

HTML5 Web Messaging
Web Messagingは
異なるドメイン同士での通信を行う
これで、インラインフレーム内に
表示されているページの
スクリプトのやりとりができる
ちなみに、Javascript単体では、
異なるドメインへの通信はできなかった

ScanSnap S1500 とubuntu

windows XPで、自炊のため購入した
ScanSnap S1500
これを、ubuntuでも使えないか実験しました

結論から書いてしまうと、使えるけど
実用的ではなかったです

sudo apt-get install xsane
sudo apt-get install imagemagic

必要なパッケージをインストールし
両面読み取りにしましたが
pdfファイルの両面読み取りでは
速度が落ちてしまいます

別のマシンで、仮想化したWindows XPで
使ったところ、明らかな差がでてしまいました

JPEGなど、別のファイルで保存すれば
速度はあがるかもしれません

なお、連続読み込みしたときには
各ページごとのファイルになります
つまり、5ページなら
pdfファイルが5つできるため、
新しくフォルダを作成し
その中で処理するようにしました

最終的には、
convertコマンドで2つのファイルにまとめられますが
手間を考えると
仮想化したWindowsが一番速いと思います  

今回は
HTML5の書籍で、ページが360Pあるため
仮想マシンで処理しました

jQueryまとめ

jQueryまとめ

jQueryプラグインで機能拡張できる
例えば、
画像のズームアップする
Zoomboxプラグインとか

コードとレイアウトを分離できる
jQueryTemplates
とか

jQueryUIは
なまえの通り、UI特化のプラグイン
ドラッグ&ドロップ、ソートみたいな汎用的機能
日付入力ボックスから、アコーディオンボックスなどなど
UI部品やアニメーション機能が使えるようになる

jQueryUIは
$(セレクー).機能名(パラメータ,....)
で呼び出す
パラメータは
{名前: 値, ....}
というハッシュ形式で指定する

$.fn.extend()を使って
自作jQueryプラグイン作成が可能
プラグインは
jQueryオブジェクトをreturnで返す
ように設計すること

自作jQueryプラグイン作成

自作jQueryプラグイン作成

自作プラグイン作成の場合、以下のような基本的骨格になる

(function($){
$.fn.extend({
メソッド名:function(){
プラグインコード
}
});
})(jQuery);

では解説
(function($){....})(jQuery)

プラグインを
$(セレクタ).メソッド(....)
jQuery(セレクタ).メソッド(....)
のどちらでも呼び出せるようにするために
記述している

これは、環境によっては毎度おなじみの
$()が無効化されていて、
jQuery()しか使えないときの対策

こういう対策は
自分の環境ではあまり気にしないけど
製品によっては
こういう環境もあるため、あとで
対処しなくていいように
あらかじめ対策する癖をつけたほうがいい

$.fn.extend()
はjQueryプラグインの定義している部分


$.fn.extend()の構文は

$.fn.extend({
メソッド名: function(){
プラグインのコード
},
....
})

ちなみに、
$.fn.extend()は
jQueryに新しいメソッドを追加するためのメソッド

プラグインは、要は
jQueryの拡張メソッドのこと

function(){....)の中に
メソッドが呼び出されたときの具体的な処理を記述する

もし、複数のメソッドを追加したいなら
メソッド名: function(){....)
の組み合わせを
,
で区切ってハッシュみたいに書けばいい

HTC Jのデフォルト動作解除

HTC J ISW13HTをアップデートしたら
インターネットを開く設定が
プリインストールされている
ブラウザで動くように設定が変わりました

さすがに、このままでは
動作が遅いため、デフォルト設定を
解除しました

これで、Gmailからのリンクを
Chromeから開けるようになりました

設定変更は
設定を開き

アプリケーション > すべて >検索
でブラウザを入力すればでます

キャッシュを消去
の下に
デフォルトをクリア
があるので、これを押せば
ブラウザのみという状態が解除されます

マーカー設定

マーカー設定

地図上にマーカーの表示をするには
オーバーレイという、レイヤークラスを作成し
そのインスタンスをMapViewの上に設定する

オーバーレイクラスは
com.google.android.mapsパッケージの
ItemizedOverlayクラスを継承して定義する

コンストラクタの引数に、
マーカーに使用する画像が
Drawableクラスのインスタンスとして引き渡されるので
その画像情報を設定し
マーカーの付属情報、
例えばお店の情報とか、目標物の情報とか
を格納するリスを作成

そして、
トースト表示やダイアログ表示を行うため
コンテキスト情報を設定し
populate()
で、マーカーの数が変更されたことを通知する

このマーカー設定は
地図アプリで多々使う

用途を限定した地図アプリとか、
位置情報関連アプリでも使える

Androidの位置情報取得

位置情報取得

Androidは人工衛星を使い、位置情報取得するGPS
Global Positioning System
以外に
無線LANのAP
基地局からの情報を特定する仕組みを持つ

ますは、GPSを使った位置情報取得について

これを行うには
AndroidManifest.xml
にGPS機能にアクセスする権限を追加する

このパーミッション追加には
uses-permissionタグを使う

android.permission.ACCESS_FINE_LOCATION

GPS機能へアクセスする権限

GPSではなく、Wi-Fiや3Gなどのように
無線LANのAPや基地局からの情報を使い
位置情報の解析をするなら
android.permission.ACCESS_COARSE_LOCATION
を使う

実機ではなく、エミュレータで開発するなら
テスト用GPS機能になるので
android.permission.ACCESS_MOCK_LOCATION
を使う

これで
Androidのパーミッションの設定はしたので、次は位置情報の取得

位置情報の取得には
android.locationパッケージのAPIを使う

android.locationパッケージの中にある
LocationManagerクラスで
Androidの位置情報サービスへアクセスし

LocationListenerインターフェースで
現在の緯度経度の取得をする

Android地図表示処理

地図表示処理

Androidで、地図表示のための主なAPIは
com.android.google.mapsパッケージにある

以下の2つが、GoogleMapsを使うとき使用する主なクラス

MapViewクラス
GoogleMapsを表示するビュークラス

MapActivityクラス
GoogleMapsを制御するアクティビティクラス

また、AndroidManifest.xmlに
使用する地図関連ライブラリを設定するため
users-libraryタグへ
android:name="com.google.android.maps"
を記述

そして、パーミッションへ
インターネットアクセス権限になる
INTERNET
を設定する

アクティビティは
地図を扱う
MapActivityを継承して使う

MapActivityクラスの
isRouteDisplayed()
をオーバーライドして実装し
戻り値をtrueにすると
ルート情報
表示する
falseならルート情報表示なし


isRouteDisplayed()は
ルート情報を表示するか否か
設定するメソッド

ソースにすると
@Override
protected boolean isRouteDisplayed(){
return false;
}

MediaRecorder.AudioSourceの定数

MediaRecorder.AudioSourceのデータソース定数

CAMCORDER
カメラデバイス

DEFAULT
デフォルト値
これは機種依存になる

VOICE_CALL
受話、送話の両方

VOICE_COMMUNICATION
IP電話のような技術を利用した音声
Skypeとかlineはこれになるかも

VOICE_DOWNLINK
受話のみ

VOICE_RECOGNITION
音声認識
使えないときにはDEFAULT

VOICE_UPLINK
送話のみ

AudioManagerの定数

AudioManagerの定数

STREAM_ALARM
アラーム音量

STREAM_DTMF
ボタンのプッシュ音量
ボタンを押したときに鳴る音

STREAM_NOTIFICATION
通知音量
メールのお知らせとかで鳴る音

STREAM_RING
着信音量

STREAM_SYSTEM
システム音量

STREAM_VOICE_CALL
通話音量


また、音量調節はプログラムでもできる
これには
android.mediaパッケージの
AudioManagerを使う

ソースにすると
//AudioManagerインスタンス取得
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

//メディア音量の設定値取得
int volume=am.getSystemVolume(AudioManager.STREAM_MUSIC);

//メディア音量の最大値取得
int maxVolume=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

//メディア音量設定
am.setStreamVolume(AudioManager.STREAM_MUSIC,(int)(maxVolume/2),0);


ソース解説すると
まず、getSystemService()へ
Contextの定数の
AUDIO_SERVICE
を指定し、AudioManagerのインスタンスを取得

設定されている音量取得には
getStreamVolume()
を使う

メディア音量取得なら
引数に、AudioManagerの定数の
STREAM_MUSICを指定

音量の最大値取得には
setStreamMaxVolume()
を使い、引数に、メディア音量の定数を設定

音量設定には
setStreamVolume()
を使い、引数には
メディア音量の定数
設定する音量
プラグ
を設定

あとは、画面にシークバーなどを設定し
音量のコントロールができるように実装する

zoombox機能の適用

Zoombox機能の適用

Zoomboxプラグインの機能を適用するには
以下のように記述する

zoombox()は
Zoomboxプラグインにより jQueryに追加されたメソッド

これで、zoomboxクラスに属するa要素に
ズームアップ機能が適用される

ソースは単純で
$('a.zoombox').zoombox();

このように、プラグインを利用するときには
プラグインに必要なjava script CSSを読み込む

プラグインのメソッドを呼び出す

という簡単な流れで実装ができる

基本なタッチイベントについて

基本的なタッチイベント

基本的なタッチイベントの取得、検知には
android.viewパッケージの
Viewクラスの
OnTouchListenerインターフェース
を使う

OnTouchListenerを実装したリスナーを
ビューに適用すると
そのビューのタッチイベントを取得できる

タッチイベントのハンドラとして
OnTouchListenerインターフェースには
onTouch()
が用意されている

onTouch()の
第1引数に、タッチされたビューオブジェクト
第2引数に、イベント情報を持つ MotionEvent
が引き渡される

このMotionEventには
タッチされた座標
タッチイベントの種類
などの情報が含まれている

MotionEventの
getActionMasking()

タッチイベントの種類を数値で取得できる

取得した数値は
MotionEventのイベント種別用定数により
どのようなタッチイベントが発生したか
判定できる

これを使えば、switchによる
条件分岐もできる

MotionEventの定数の代表的なものとして

ACTION_MOVE
ドラッグしたときのイベント判定

ACTION_CANCEL
タッチイベントをキャンセルしたときの
イベント判定

ACTION_OUTSIDE
タッチイベント対象以外をタッチしたときのイベント判定


getActionMasked()は
タッチイベントの種類を数値で取得したけど
これ以外にも
MotionEventのメソッドは存在する

以下はその一部

getX()
タッチされたX座標

getY()
タッチされたY座標

getDownTime()
タッチされていたミリ秒単位の時間

getEdgeFlags()
対象のビューの端をタッチしたかを判定

getPressure()
タッチされた圧力

getSize()
タッチされている範囲


画面のタッチイベントの取得は
Activityの
onTouchEvent()

override
することでも取得できる

ソースにすると
public boolean onTouchEvent(MotionEvent event){

onTouchEvent()の引数には
MotionEventが渡されるので
タッチイベントの種類、座標などが同様に取得できる

実は
onTouchEvent()は
Viewクラスにも定義されているので
Viewクラスを継承したビュークラスで
overrideして
そのビューのタッチイベントを取得するこもできる

public class TouchScreen extends View{
public boolean onTouchEvent(MotionEvent event){

zoomboxプラグイン

Zoomboxプラグイン

サムネイル画像をクリックすると
そのページ内で動画がズームアップされて表示されるようにできる

あと、ゲームのサンプルCGとかも
これが使われるようだ

これを実装するには
jQueryUIのプラグインのひとつ
Zoomboxプラグインを使うことでできる

必要なプラグインをダウンロードして解凍
その中にあるので、必要なファイルが

zoombox.js
Zoomboxプラグインの本体

zoombox.css
Zoomboxプラグインのスタイルシート

img
Zoombox分で使える画像

あとは、これらを
scriptタグや linkタグでファイルのパスを指定すれば適用できる

タッチイベントの種類

タッチイベントについて

タッチイベントは、大きく分けて2つ

基本的なタッチイベント
複雑なタッチイベント

基本的なタッチイベントは
スクリーンのタッチ
スクリーンから指をはなす
スクリーン上でドラッグとか、
単純な操作のこと

複雑なタッチイベントは
長押し
フリック
ダブルタップ
など、複雑にした操作

アニメーションタグで指定可能な属性

アニメーションタグで指定可能な属性

rotateタグの属性

android:fromDegree
アニメーション開始時の画像の角度設定

android:toDegree
アニメーション終了時の画像の角度設定

android:pivotX
回転の中心となるX座標の設定

android:pivotY
回転の中心となるY座標の設定


続いて、translateタグの属性

android:fromXDelta
アニメーション開始時のX座標の設定

android:fromYDelta
アニメーション開始時のY座標の設定

android:toXDelta
アニメーション終了時のX座標の設定

android:toYDelta
アニメーション終了時のY座標の設定

fromで開始時、toで終了時と覚えると楽


次に、scaleタグ

android:fromXScale
アニメーション開始時の水平方向の要素を設定

android:fromYScale
アニメーション開始時の垂直方向の要素を設定

android:toXScale
アニメーション終了時の水平方向の要素を設定

android:toYScale
アニメーション終了時の垂直方向の要素を設定

android:pivotX
スケール変更の中心となるX座標を設定

android:pivotY
スケール変更の中心となるY座標を設定

これも
fromで開始時、toで終了時
そして
Xは水平、Yは垂直と覚えると楽


最後に、alpha属性

android:fromAlpha
アニメーション開始時の透過度を
0.0~1.0で設定
ちなみに、1.0は無透過になる

android:toAlpha
アニメーション終了時の透過度を
0.0~1.0で設定
ちなみに、alphaは透過度という意味

interpolatorサブクラスとリソースID

InterpolatorサブクラスとリソースID

AccelerateDecelerateInterpolator
リソースは
@android:anim/accelerate_decelerate_interpolator
開始は遅く、その後加速し
終了に向けて減速

AccelerateInterpolator
リソースは
@android:anim/accelerate_interpolator
開始は遅く、その後加速
加速割合は
android:factor属性で設定
デフォルトは1

AnticipateInterpolator
リソースは
@android:anim/anticipate_interpolator
開始位置から目的位置とは逆方向に
一度移動してから目的位置に移動
逆方向に移動する割合は
android:tension属性で設定
デフォルトは2

AnticipateOvershootInterpolator
リソースは
@android:anim/anticipate_overshoot_interpolator
開始位置から目的位置とは逆方向に移動してそのまま通り過ぎてから
目的位置に移動
通り過ぎる割合は
android:tensionで設定
デフォルトは2
android:tension属性の倍の割合を
android:extratension属性で設定
デフォルトは1.5

BounceInterpolator
リソースは
@android:anim/bounce_interpolator
最後にバウンド

CycleInterpolator
リソースは
@android:anim/cycle_interpolator
指定した回数繰り返す
繰り返しの回数は
android:cycle属性で設定
デフォルトは1

DecelerateInterpolator
リソースは
@android:anim/decelerate_interpolator
最初は速く、その後減速
減速の割合を
android:factor属性で設定
デフォルトは1

LinearInterpolator
リソースは
@android:anim/linear_interpolator
変化の割合は一定

OvershootInterpolator
リソースは
@android:anim/overshoot_interpolator
開始位置から目的位置まで移動し
そのまま通り過ぎてから
目的位置に移動
通り過ぎる割合を
android:tension属性で設定
デフォルトは2

アニメーションタグの共通属性

アニメーションタグの共通属性

android:interpolator
アニメーションの加速と減速を設定

android:duration
アニメーションの動作時間
単位はミリ秒

android:fillAfter
trueなら
アニメーション終了後の状態を維持

android:fillBefore
trueなら
アニメーション終了後に開始時の状態を維持

android:fillEnabled
trueなら
fillAfter属性を有効にする

android:repeatCount
アニメーションの繰り返す回数

android:repeatMode
アニメーションの繰り返す動作
restartで初めから繰り返す
reverseは終わりから繰り返す

android:startOffset
アニメーション開始までの待ち時間
単位はミリ秒

android:zAdjustment
アニメーション実行中の
コンテンツのZ軸方向の設定

この中で
android:interpolator属性は
アニメーションに
加速、減速、動きの繰り返し、バウンドなどの効果をつける
 
この属性に設定できるのは
interpolatorのサブクラスを参照する
リソースID

アニメーションXMLのタグ

アニメーションXMLで使用するタグ

rotate
回転アニメーション

translate
移動アニメーション

scale
拡大縮小アニメーション

alpha
透過アニメーション

set
複数のアニメーションの組み合わせ

animation-list
画像の切り替えアニメーション


このうち
animation-listタグ以外は
同じような設定、プログラムになる

アニメーションXML

アニメーションXMLを使用した描画

Androidでは、以下のアニメーションが実現可能

Rotate
画像を回転させる

Translate
画像を移動

Scale
画像の拡大縮小

Alpha
画像の透明度を変える

Animation-list
複数の画像を切り替えて表示

ちなみに、アニメーションXMLではなく
Javaでも実装できるけど
こっちのほうが楽

アニメーションXMLは
プロジェクトの
resフォルダに
animフォルダを作成し
その中に配置する

Canvasクラスのメソッド

Canvasクラスのメソッド

Canvasクラスのメソッドを使うことで
点、線、円などの描画ができる

以下は代表的名もの

drawArc()
円弧を描画

drawBitmap()
ビットマップ形式の画像を描画

drawCircle()
円を描画

drawColor()
Canvasの色を指定する

drawLine()
直線を描画

drawOval()
楕円を描画

drawPath()
複数の直線で多角形を描画

drawPicture()
画像を描画

drawPoint()
点を描画

drawPosText()
float型配列posで指定した座標に沿って
テキストを描画
写真に文字を描くようなかんじ

drawRect()
四角形を描画

drawRoundRect()
角の丸い四角形を描画

drawText()
指定した座標(xとy)を基点にテキスト描画
CDのレーベルに文字をいれるようなかんじ

補足事項として
ビュークラスを定義し
レイアウト設定ファイルに直接設定する場合
コンストラクタの引数は2つになる

第1引数は、コンテキスト情報
第2引数は、レイアウト設定ファイルで設定された属性情報
が引き渡される

さらに、ビューのサイズが変更されたときに
ビューのサイズを再度正しく設定するための
onMeasure()も定義する必要がある

Canvasクラスのメソッド

Canvasクラスのメソッドを使うことで
点、線、円などの描画ができる

以下は代表的名もの

drawArc()
円弧を描画

drawBitmap()
ビットマップ形式の画像を描画

drawCircle()
円を描画

drawColor()
Canvasの色を指定する

drawLine()
直線を描画

drawOval()
楕円を描画

drawPath()
複数の直線で多角形を描画

drawPicture()
画像を描画

drawPoint()
点を描画

drawPosText()
float型配列posで指定した座標に沿って
テキストを描画
写真に文字を描くようなかんじ

drawRect()
四角形を描画

drawRoundRect()
角の丸い四角形を描画

drawText()
指定した座標(xとy)を基点にテキスト描画
CDのレーベルに文字をいれるようなかんじ

補足事項として
ビュークラスを定義し
レイアウト設定ファイルに直接設定する場合
コンストラクタの引数は2つになる

第1引数は、コンテキスト情報
第2引数は、レイアウト設定ファイルで設定された属性情報
が引き渡される

さらに、ビューのサイズが変更されたときに
ビューのサイズを再度正しく設定するための
onMeasure()も定義する必要がある

Paintクラスのメソッド

Paintクラスのメソッド

Paintクラスのメソッドは
筆の太さ、色、塗り方を設定できる

setColor()
筆の色を設定

setARGB()
筆の色をRGBと
アルファ値(透明度)で設定

setAntiAlias()
アンチエイリアスを有効にする
trueを設定すると
輪郭が滑らかに表示されて見やすくなる

setAlpha()
筆の色のアルファ値 (透明度)を設定

setStrokeWidth()
筆の太さを設定

setStyle()
図形の塗り方を設定
引数には
Paint.Style.STROKE
輪郭線のみ

Paint.Style.FILL
塗りつぶし

Paint.Style.FILL_AND_STROKE
塗りつぶして、輪郭線も描く

canvasクラスを利用した描画

Canvasクラスを利用した描画

Canvasクラスを直接利用して描画する方法

何かを描画するには
キャンパス

筆とかの絵を描く道具
が必要

Androidだと
キャンパスが Canvasクラス
筆がPaintクラス
となる

これらを使えば
画面にタッチして絵を描いたり
手書きメモもできる
最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック