| テクパー2020 テクニカルヘルパー | 
| アンドロイドアプリ開発 | 
| ◆ 画像(イメージ)のスライド描画 ・ 画像(イメージ)をスライドしながら描画します | 
 4.生成された 「 ImageSlideView 」 を書き換え
      4.生成された 「 ImageSlideView 」 を書き換え
      | 
package com.proto.imageslide;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class ImageSlideView extends SurfaceView
                            implements SurfaceHolder.Callback,Runnable {
    private SurfaceHolder holder;	// サーフェイスホルダー
    private Thread thread;		// スレッド
    private Paint paint;		// ペイント
    private Canvas canvas;		// キャンパス
    private Bitmap images;		// 画像(イメージ)
    private int px=0; 		        // X座標
    private int py=0; 		        // Y座標
    private int vx=10;		        // X速度
    private int vy=10;		        // Y速度
    private int cnt=0; 		        // カウント
    // コンストラクタ
    public ImageSlideView(Context context) {
        super(context);
        // 画像(イメージ)の指定
        Resources r=context.getResources();
        images=BitmapFactory.decodeResource(r,R.drawable.site_guide);
        // サーフェイスホルダーの生成
        holder=getHolder();
        holder.addCallback(this);
        holder.setFixedSize(getWidth(),getHeight());
        // ペイントの生成
        paint=new Paint(); 
        paint.setAntiAlias(true);	  // 文字の縁を滑らかに描く
        paint.setTextSize(18);		  // 文字サイズ
        paint.setColor(Color.MAGENTA);	  // 文字色
    }
    // サーフェイスの生成
    public void surfaceCreated(SurfaceHolder holder) {
        thread=new Thread(this);
        thread.start();
    }
    // サーフェイスの終了
    public void surfaceDestroyed(SurfaceHolder holder) {
        thread=null;
    }
    // サーフェイスの変更
    public void surfaceChanged(SurfaceHolder holder, int format,int w,int h) {
    }
    // スレッドの処理
    public void run() {
        while(thread!=null) {
            int imgW=images.getWidth();	     // 画像(イメージ)幅
            int imgH=images.getHeight();     // 画像(イメージ)高さ
            // ロック
            canvas=holder.lockCanvas();
            // 背景色の指定 (android.graphics.Colorの定義)
            canvas.drawColor(Color.CYAN);
            ++cnt;
            canvas.drawText("画像(イメージ)のスライド描画 "+cnt,0,20,paint);
            canvas.drawText("サイズ: 幅="+imgW+", 高さ="+imgH,0,40,paint);
            canvas.drawText("座標: X="+px+", Y="+py,0,60,paint);
            canvas.drawText("速度: X="+vx+", Y="+vy,0,80,paint);
            // 画像(イメージ)のスライド描画
            canvas.drawBitmap(images,px,py,null);
            // アンロック
            holder.unlockCanvasAndPost(canvas);
            // 描画座標のスライド
            if (px<-imgW || getWidth() | 
| 
package com.proto.imageslide;
import android.app.Activity;
import android.os.Bundle;
import android.graphics.PixelFormat;
//import android.view.Window;
public class ImageSlide extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // ウィンドウタイトルの非表示 
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // ウィンドウの表示形式
           (OPAQUE:不透明,TRANSLUCENT:半透明,TRANSPARENT:透過)
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        // setContentView(R.layout.main);書き換え
        setContentView(new ImageSlideView(this));
    }
} | 
| 
public class ImageSlideView extends SurfaceView
                            implements SurfaceHolder.Callback,Runnable {
implements SurfaceHolder.Callback,Runnable の追加
 | 
| android.app.Activity のActivityクラスでウィンドウの取得 // アクティビティの現在ウィンドウの取得(ウィンドウAPIにアクセス) public Window getWindow () | 
| android.view.Window のWindowクラスでウィンドウ形式の指定 // ウィンドウ形式の指定(PixelFormatでの値) public void setFormat (int format) | 
| android.graphics.PixelFormat のPixelFormatクラスのコンスタント OPAQUE : システムが不透明な形式 TRANSLUCENT : システムが半透明をサポートする形式 TRANSPARENT : システムが透過性をサポートする形式 | 
| android.view.SurfaceView のSurfaceViewクラスの生成 // サーフェイスホルダー の取得 public SurfaceHolder getHolder () | 
| android.view.SSurfaceHolder のSurfaceHolderの生成 // コールバックインターフェイスの追加(コールバックインターフェイス) public abstract void addCallback (SurfaceHolder.Callback callback) // ウィンドウの固定サイズの指定(ウィンドウの幅,ウィンドウの高さ) public abstract void setFixedSize (int width, int height) | 
| android.view.SurfaceHolder.Callback の実装 // サーフェイスホルダー 生成時の処理(サーフェイスホルダー) public abstract void surfaceCreated (SurfaceHolder holder) // サーフェイスホルダー 破棄(終了)時の処理(サーフェイスホルダー) public abstract void surfaceDestroyed (SurfaceHolder holder) // サーフェイスホルダー 変更(形式やサイズ)時の処理 (サーフェイスホルダー,新しいPixelFormat,新しい幅,新しい高さ) public abstract void surfaceChanged (SurfaceHolder holder, int format, int width, int height) | 
 
    | Copyright (C) 2010 プログラミングのテクニックをあなたに!!(リトル・ヘルパー) All Rights Reserved. |  |