スポンサーサイト

 --, -- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

開発日誌 - コメント表示型の動画プレイヤー for Android (流れるコメントクラスの実装)

 02, 2013 12:09
新年明けましておめでとうございます。
予定では 2012 年末に滅亡してた筈なんですけどね。おかしいですね。


年末年始は結局ずーっと Android 弄ってます。
業務ソフトWeb 系の経験はあるのですが、ゲームとかその手のコードを触ったことがないので
描画したものを動かすだとか、そういった類に滅法弱いことを痛感しました。

Android では画面上に表示されるコントロールのことを View と言って
元から用意されているテキストボックスだとかボタン等は View の派生クラスになっているようです。
.NET で言うところの System.Windows.Forms.Control のようなものでしょうか。

動画の再生自体は大したことはありません。
Android のパッケージに VideoView というコントロールがあるのでそれを貼り付けて
動画のパスを渡すロジックをちょっと書いただけです。

オブジェクトを動かしたりだとか、端末に高負荷をかけるような処理をする場合は
元々用意されていたコントロールは使わずに、SurfaceView というクラスを使って
Thread を動かしながら、描画ロジックを自分で組む必要があります。


import android.content.Context;
import android.graphics.Canvas;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;
import java.lang.Runnable;

public class TestSurfaceView extends SurfaceView
implements SurfaceHolder.Callback,Runnable {

private Thread _thread;

// コンストラクタ
public TestSurfaceView(Context context) {
super(context);

// コールバック登録
getHolder().addCallback(this);

// 半透明を設定
// getHolder().setFormat(PixelFormat.TRANSLUCENT);

// このViewをトップにする
// setZOrderOnTop(true);

}

@Override
public void surfaceCreated(SurfaceHolder holder) {
// スレッド処理開始
_thread = new Thread(this);
_thread.start();
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// スレッド開放
_thread = null;
}

@Override
public void run() {
while (_thread != null) {
// ホルダーからキャンバスの取得
Canvas canvas = getHolder().lockCanvas();
if (canvas != null) {
try {
// 描画処理
doDraw(canvas);
} finally {
// 描画内容の確定
getHolder().unlockCanvasAndPost(canvas);
}
}
}
// 移動処理
moveProc(canvas);
}

private void doDraw(Canvas canvas) {
// 描画処理
}

private void moveProc(Canvas canvas) {
// 移動処理
}
}


上記のコードは SurfaceView を継承して Thread 処理をする上での基本的な雛形です。
ググったら似たようなコードは沢山見つかると思います。
doDraw メソッド内で描画処理をし、moveProc 内でそれを動かして使います。

これをなんやかんやして、コメントのクラスにしました。
↓が実機でのテスト動画です。




こんだけの為に 1 週間以上かかちゃったよ…(;´o`)
IDEjava もまともに使ったの初めてだし、こんなもんですかね…。

次はコメントの速度とか設定できるようにしまーす。



関連記事
開発日誌 - コメント表示型の動画プレイヤー for Android
開発日誌 - コメント表示型の動画プレイヤー for Android (XMLを‘再生’する為のクラス群)
開発日誌 - コメント表示型の動画プレイヤー for Android (コメント速度の計算)
開発日誌 - コメント表示型の動画プレイヤー for Android (アイコン作成)
開発日誌 - コメント表示型の動画プレイヤー for Android (とりあえずそれっぽくなった)


スポンサーサイト

Tag:Android 動画 プレイヤー Eclipse コメント java SurfaceView

COMMENT - 0



WHAT'S NEW?

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。