質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

ピンチイン・ピンチアウトを無効にできない

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

2回答

0グッド

0クリップ

3009閲覧

投稿2016/11/03 10:52

###前提・実現したいこと
友達からAndroidアプリのプログラムをもらい、そのアプリの機能を追加しようと考えています。

もらったアプリというのが値を入力したファイルを作成し、そのファイルを読み込んで計算させたのちに
計算したデータを基に立方体を表示(点・線・実体)するというものです。

表示した図形を回転させたりピンチアウト・ピンチインで拡大縮小することができるようになっています。

それでここからが本題なのですが回転の機能はそのまま残しておきたいものの
拡大縮小をピンチアウト・ピンチインではない方法にしてみたいので
まずはプログラムのズーム機能の部分を無効化しようと思いました。

そのため下記にあるソースコード内の
「MotionEvent.ACTION_MOVE」のelse以降(ズーム制御と書いてあるところ以降)をコメントアウトしてみたのですが
実機で確かめてみると普通にピンチアウト・ピンチインでズームができてしまいます。

どのようにすればタッチスクロールの回転だけ残して
ピンチアウト・ピンチインの拡大縮小を無効にできるでしょうか。

よろしくお願いします。

###該当のソースコード
タッチ操作のプログラムは以下の感じです。

java

1public class MyGLView extends GLSurfaceView { 2 MyRenderer myRenderer; 3 4 public MyGLView(Context context) { 5 super (context); 6 myRenderer = new MyRenderer(); 7 setRenderer(myRenderer); 8 9 } 10 11 final float TOUCH_SCALE_FACTOR = 0.2f; 12 final float MULTI_TOUCH_SCALE_FACTOR = 0.01f; 13 private float mPreviousX0; 14 private float mPreviousY0; 15 private float mPreviousX1; 16 private float mPreviousY1; 17 18 @Override 19 public boolean onTouchEvent(MotionEvent event) { 20 int Action = event.getAction(); 21 int Count = event.getPointerCount(); 22 float X0 = event.getX(0); 23 float Y0 = event.getY(0); 24 float X1 = (Count >= 2) ? ((float)event.getX(1)) : X0; 25 float Y1 = (Count >= 2) ? ((float)event.getY(1)) : Y0; 26 switch (Action & MotionEvent.ACTION_MASK) { 27 case MotionEvent.ACTION_UP: 28 break; 29 case MotionEvent.ACTION_POINTER_UP: 30 break; 31 case MotionEvent.ACTION_MOVE: 32 if(Count == 1) { 33 //回転制御 34 float DX0 = X0 - mPreviousX0; 35 float DY0 = Y0 - mPreviousY0; 36 myRenderer.RotateX += DX0 * TOUCH_SCALE_FACTOR; 37 myRenderer.RotateY += DY0 * TOUCH_SCALE_FACTOR; 38 39 }else{ 40 //ズーム制御 41 float DX = X0 - X1; 42 float DY = Y0 - Y1; 43 float PreviousDX = mPreviousX0 - mPreviousX1; 44 float PreviousDY = mPreviousY0 - mPreviousY1; 45 float SquareDX = DX * DX; 46 float SquareDY = DY * DY; 47 float SquarePreviousDX = PreviousDX * PreviousDX; 48 float SquarePreviousDY = PreviousDY * PreviousDY; 49 float RootSquareDXY = (float) Math.sqrt(SquareDX + SquareDY); 50 float RootSquarePreviousDXY = (float) Math.sqrt(SquarePreviousDX + SquarePreviousDY); 51 if (myRenderer.TrancelateZ > 10.0f) { 52 myRenderer.TrancelateZ = 10.0f; 53 }else{ 54 myRenderer.TrancelateZ += (RootSquareDXY - RootSquarePreviousDXY) * MULTI_TOUCH_SCALE_FACTOR; 55 } 56 } 57 } 58 mPreviousX0 = X0; 59 mPreviousY0 = Y0; 60 mPreviousX1 = X1; 61 mPreviousY1 = Y1; 62 return true; 63 } 64 65} 66

###試したこと
上記のプログラムの「ズーム制御」以降をコメントアウトで無効化

###補足情報(言語/FW/ツール等のバージョンなど)
OpenGL ES 1.0
Java

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

0

ベストアンサー

一旦アプリを削除してもう一度実行しなおすとうまくいきました。

投稿2016/11/03 11:46

退会済みユーザー

退会済みユーザー

総合スコア0

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

myRenderer.TrancelateZは拡大縮小率でしょうか。
elseブロック以外でmyRenderer.TrancelateZをほかで更新している箇所はありませんか。

投稿2016/11/03 11:07

yona

総合スコア18147

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2016/11/03 11:45

回答いただきありがとうございます。 アプリをいったん削除してもう一度実行するとうまくいきました。 貴重なお時間を奪ってしまい申し訳ありませんでした。
yona

2016/11/03 11:46

インスタンスランの影響かも知れないですね

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。