勉強中ですので簡単な説明とサンプルコードだけ載せておきます。 SurfaceViewの特徴 ・Viewに比べて高機能。 ・高速描画ゲームを作成可能。 ・Viewに比べてちょっと面倒。 ◆使い方 (1)SurfaceViewを使用する為に ・SurfaceViewクラスを継承する ・SurfaceHolder.Callback クラスのインターフェースを実装する (2)描画する為に SurfaceHolderからCanvasクラスのインスタンスを取得する 『Canvas canvas = holder.lockCanvas();』 詳細は、@ITが分かりやすかったです。 ◆ソース(SurfaceView) package tanmen.jp; import android.content.Context; import android.graphics.Can
表示される画像の透明度を設定する方法を確認します。「ImageView」クラスで用意されている「setAlpha」メソッドを使います。 setAlpha public void setAlpha(int alpha) Parameters: alpha 透明度を表す数値 1番目の引数に透明度を表す数値を0から255までの値で指定します。0に近ければ透明度が高く、255に近づけば非透明となっていきます。 具体的には次のように記述します。 private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); ImageView image = new ImageView(this); image.
AndroidでWeb APIを使う場合、マルチスレッドによるユーザビリティ向上を以前のエントリで説明しました。 AndroidアプリのUIはシングル・スレッド モデルです。 単純にマルチスレッドにしてUIの操作をしてしまうと、CalledFromWrongThreadExceptionでアプリがダウンしてしまいます。 これを回避する仕組みがHandlerです。 Handlerの仕組みを簡単に説明しようと思ったのですが、 またもや長くなってしまったので、先にまとめます。 AndroidのUI操作はシングル・スレッド モデル ユーザビリティ向上の為にはマルチスレッドが必要 Handlerで実現 Handlerを使わない場合に起きる例外は実行スレッドのチェックで発生 Handlerを使うと、UI Threadの持つキューにジョブを登録できる キューはUI Threadにより実行される
Android の画面表示の基礎は View です。 ウィジェットなども View を継承しています (なので View そのものです。 is-a 関係)。 アクティビティに画面を繋げるには setContentView を呼び出しますね。 さて、高度なアニメーションを必要とする場合などは描画面 (Drawing Surface) を自分で極力制御したい。だけどそれが、 View じゃないと、 アクティビティと関連付けができません。 ということで、出てくるのが SurfaceView です。 ・・・って、説明がちょっと強引だったでしょうか(苦笑) 簡単に技術的に言えば、描画用のスレッドを持った View を作るときは、SurfaceView を使います。 OpenGL でも GLSurfaceView というのがあって専用の描画用スレッドを持っていますが、ここで説明すのは、 基本的な Su
2010年10月16日土曜日 Android SurfaceView を使ってみる 早速ですが、SurfaceViewを使う簡単なプログラムを書いて動かしてみましょう。 (プロジェクト作成後、.javaだけ編集しています) package com.example.test.surfaceview; import android.app.Activity; import android.os.Bundle; import android.view.View; public class SurfaceViewTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = new MySurfa
package net.npaka.graphicsex; import android.app.Activity; import android.os.Bundle; import android.view.Window; //グラフィックスの描画 public class GraphicsEx extends Activity { //アプリの初期化 @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(new GraphicsView(this)); } } package net.npaka.graphicsex; import android.content.Conte
◆ グラフィックの描画 ・ グラフィック(ライン,パス,オフセット,キュービック,カドリール,四角形,円)を描画します 1.新規プロジェクトで 「 Design 」 を新規に作成します 1)ファイル(F) → 新規(N) → プロジェクト(P) 2)Android の Android プロジェクト を選択し、[次へ(N)]ボタン をクリック ・プロジェクト名に 「 Design 」 を入力 ・ビルド・ターゲットの □ Android 2.2 を チェック (最新のバージョン) ・アプリケーション名に 「 Design 」 を入力 ・パッケージ名に 「 任意のドメイン名 」 を入力 (ドメイン名をパッケージ名に利用) ・□ Create Activityがチェック状態で、名称に 「 Design 」 を入力 ・[完了]ボタン をクリック 3)Viewクラス 「 DesignView 」 を新
グラフィックを描画するには、描画する位置を座標で指定する必要があります。 ここでは、座標と座標をあらわすクラスについてみていきます。 描画領域の取得 グラフィックの描画領域は、右上の点を(0,0)として右に向かってx座標の値が、下に向かってy座標の値が増えていきます。 Viewクラスの描画領域を取得するには、getWidthメソッドとgetHeightメソッドを使って取得できます。 SurfaceViewの描画領域も、Viewクラスのサブクラスですので、同じように取得できます。 Canvasクラスにも、getWidthメソッドとgetHeightメソッドがありますが、こちらはWindowのタイトルバーも含めた領域となるようです。 Canvasクラスにも、getWidthメソッドとgetHeightメソッドがあります。 また、View#onSizeChangedメソッドをオーバライトすると、
上記以外にも写真に位置情報を入れたり、写真のサイズを変更したり、JPEGのクオリティを設定したりできます。 気を付けなければならないのは、「Camera.Parametersで定義されている設定は、必ずしもすべての端末で使用できるわけではない」という点です。 例えば「花火を撮影するシーン」というものがCamera.Parameters.SCENE_MODE_FIREWORKSとして定義されていますが、これが使用できるかできないかは、以下のように判定する必要があります。 Camera.Parameters params = camera.getParameters(); List<String> supported = params.getSupportedSceneModes(); if (supported != null) { for (String sm : supported) {
android.graphicsパッケージ - Canvasクラス、 android.graphicsパッケージ - Pathクラス、 を使用します。 Canvas.drawPath()を呼び出すと、パスを描画できます。 サンプルソースコード @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.argb(255, 164, 199, 57)); canvas.drawARGB(255, 255, 255, 255); // 目 Path clipPath = new Path(); clipPath.addCircle(140, 80, 3, Path.Direction.CW); canvas.c
SampleView extends Viewを、res/layout/main.xmlの中に組み込んでみました。 ポイントは3つ。 一つ目は、Viewクラスのコンストラクタの引数を(Context context, AttributeSet attrs) にすること。 二つ目は、onMeasure(int widthMeasureSpec, int heightMeasureSpec)を定義すること。 最後に、Viewの名前を付けたXMLタグを専用のレイアウトに放り込むこと。(これは自信ない SampleView.java package org.ateliernkzn.InnerLayout; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; im
SurfaceViewならAndroidで高速描画ゲームが作れる:Androidで動く携帯Javaアプリ作成入門(12)(1/3 ページ) 本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Marketでの配布を目指しましょう Androidの開発者はスィーツがお好き? 開発コード「Eclair」(エクレア)で呼ばれていたAndroid 2.0が、2009年10月27日にリリースされました(参考:グーグル、Android 2.0対応のSDKリリース)。 直前のバージョン、Android 1.6 Donut(ドーナツ)から1カ月弱でのメジャーアップデートです。Android 2.0で追加された目玉機能は、Bluetooth用のAPIで、これはAndroid 1.0で搭載を見送りされたいわく付きのAPIでもあります。今後、Blueto
はじめに 久々の投稿です。以前、SurfaceViewについての記事を投稿しましたが、その際はSurfaceViewを画面全体に使用しており、レイアウトにxmlファイルを使用していませんでした。しかし、androidを開発する場合は、レイアウトはxmlファイルにまとめた方が何かと便利ですので、今回はxmlファイルを使用してSurfaceViewを画面上にレイアウトしてみたいと思います。 ポイント 今回のポイントは、SurfaceViewのためのコールバックをどうやって登録するか、です。そこさえ理解できれば、後は以前の記事と同じです。 プロジェクトの新規作成 いつものようにEclipseを起動して、新規プロジェクトを作成します。「ファイル」→「新規」→「Androidプロジェクト」を選択して、「新規Androidプロジェクト」ウィンドウを表示させます。そして以下を設定します。 プロジェクト名
はじめに 今回からは、SurfaceViewクラスについて、調べていきます。SurfaceViewクラスは、@IT「SurfaceViewならAndroidで高速描画ゲームが作れる」にもあるように、ゲームアプリなどで、定期的に描画が必要となる場合に効果を発揮するクラスです。 今回は、まず@IT「SurfaceViewならAndroidで高速描画ゲームが作れる」にあるサンプルコード(zip圧縮したもの)を利用しようと思います。 と思いましたが、このサンプルコードには、大変親切なことにいろいろなサンプルをListViewで選択して試すことができるようで、SurfaceView導入編としては敷居が高いかも・・・と思ったので、やはりシンプルに最初から順々にやっていきます。ただし、@ITのサンプルコードは多いに参考させていただきます。参考とするコードはHello.javaです。 プロジェクトの新規作
はじめに 久々の投稿です。以前、SurfaceViewについての記事を投稿しましたが、その際はSurfaceViewを画面全体に使用しており、レイアウトにxmlファイルを使用していませんでした。しかし、androidを開発する場合は、レイアウトはxmlファイルにまとめた方が何かと便利ですので、今回はxmlファイルを使用してSurfaceViewを画面上にレイアウトしてみたいと思います。 ポイント 今回のポイントは、SurfaceViewのためのコールバックをどうやって登録するか、です。そこさえ理解できれば、後は以前の記事と同じです。 プロジェクトの新規作成 いつものようにEclipseを起動して、新規プロジェクトを作成します。「ファイル」→「新規」→「Androidプロジェクト」を選択して、「新規Androidプロジェクト」ウィンドウを表示させます。そして以下を設定します。 プロジェクト名
要注意! 本当は怖い出力データ:イチから始める! Androidセキュリティ(4)(1/3 ページ) 「もいちどイチから! HTTP基礎訓練中」でWebアプリケーションの脆弱性と対策について学んだクウが、今度はAndroidの世界に挑戦。Android特有の問題、PCや従来の携帯電話向けのWebアプリとの違いや対策について紹介します。(編集部) システムログは厄介もの? 前回のお話で、ログ情報やデバッグ用に出力する情報を通じて、パスワードなどの重要な情報が漏えいしてしまう可能性があることを認識したクウ。さっそくAndroidアプリの修正に取り組んでいたところ、コミュニティで知り合ったジュンさんから「Androidアプリについて語る会」に誘われて……。 週末、クウはナツから聞いたお店へと足を運んだ。 クウ 「ここかな……?」 ジュン 「おー。久しぶり♪」 ナツ 「来たねー。急に決めてごめんね
Eclipseを使用したAndroidアプリ作成時に、 最初に入力するpackage名を後から変更する方法。 ネーミングルールが守られていなかったので修正しましたのよ。 (ネーミングルールがいろいろごっちゃになってた私。反省。) 以下の修正方法でエミュレーターは動いてるぽいので、たぶん大丈夫でしょう。 [1](プロジェクト名) > src > (パッケージ名)の上で右クリック -> リファクタリング > 名前変更 ->“新しい名前”のとこに変更したいパッケージ名を入力 > プレビュー -> インポート宣言の修正チェック(たぶん一番上)だけ外す > OK gen以下のR.javaをインポートするために、 コードの追加をしようとしてくれるのだけど 最終的にgenのパッケージ名も変えるので修正しない。 [2](プロジェクト名) > gen > (パッケージ名)の上で
わかめ@毎日猫がいる @vvakame @123daaaatch AndroidManifest.xmlを見直し それでいけるはず。最初の作業開始時にプロジェクトにエラーが無い状態であるとこから始めるのが重要 #vvacka 2010-11-22 17:22:37 わかめ@毎日猫がいる @vvakame @123daaaatch プロジェクトを右クリックしてAndroidうんたら→Package名の変更的なやつ そのあと、src下のパッケージ名を右クリック→Refactor→Rename的なのでチマチマ直す その後エラーはでないけど起動できなくなるはずなので #vvacka 2010-11-22 17:22:04
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く