忍者ブログ
  • 2024.02
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.04
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/03/29 07:58 】 |
AyaComicViewer 1.0.2 と 1.0.3
Android1.6以下でご利用の皆様へ

AyaComicViewerはAndroid1.6以下では正常に動作致しません
修正版を公開しておりますので、最新版へアップデートしてください。

影響を受けた皆様、本当に申し訳ありませんでした。


N71Nていう中華PAD買いました!
Android2.2ですよ!2.2!!

すごい!
はいてく!

というわけで、早速マルチタッチで拡大縮小を実装しました!!
と調子に乗って公開したらAndroid1.6以下で動かなくなっていました。。

現在は修正版をマーケットに公開しています。
マーケットより最新版(1.0.3)にバージョンアップすればAndroid1.6で使用できるようになります。




デバッグ用のapkだときちんと動くのにちゃんと署名すると動かない何かができてたみたいです。
コード的には↓こんなん。

     public void init(){
        class dist {
            public float distance(View v, MotionEvent event) {
                float x = event.getX(0) - event.getX(1);
                float y = event.getY(0) - event.getY(1);
                float size = FloatMath.sqrt(x * x + y * y);
                return size;
            }
        }

        if ( Integer.parseInt(android.os.Build.VERSION.SDK) >= 7)
            float size = new dist().distance(v, event);
        }
    }


MotionEvent.getX(int) が1.6だと使えないAPIです。
なにがだめなんだ・・・おしえて・・エロイ人・・・

プロガード先生がdist.distance()を展開してくれたんじゃないかなあとか考えてますが・・・


バージョンごちゃまぜなAndroidプログラミングの難しさを感じてしまいました・・



修正版では

    public float distance(View v, MotionEvent event) {
        try {
            Method getX ;
            Method getY ;
            Class<?> sgManager = Class.forName("android.view.MotionEvent");
            Class<?> paramstype[] = { int.class };
            getX = sgManager.getMethod("getX", paramstype);
            getY = sgManager.getMethod("getY", paramstype);
            float x = (Float)getX.invoke(event, 0) - (Float)getX.invoke(event, 1);
            float y = (Float)getY.invoke(event, 0) - (Float)getY.invoke(event, 1);
            float size = FloatMath.sqrt(x * x + y * y);
            return size;
        } catch (Exception o) {
            Log.d("AyaComicViewer", "getXY(I) failed");
            return 0;
        }
    }

こういうやっていいのか悪いのか微妙な感じになっています。
これなら展開されてもエラーにならないし、万が一マルチタッチ非対応のOSで
このコードを通ってしまってもExceptionで捕まえられます。。

いいのかこれ・・・
というか、上位バージョンの対応するたびにこれなのか・・
どうなんだ・・・

PR
【2011/07/05 00:59 】 | AyaComicViewer | 有り難いご意見(0) | トラックバック()
<<AyaComicViewer 1.0.4 | ホーム | AyaComicViewer 1.0.0>>
有り難いご意見
貴重なご意見の投稿














虎カムバック
トラックバックURL

<<前ページ | ホーム | 次ページ>>