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

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

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

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

OpenGL ES

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

Android

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

Android Studio

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

Q&A

解決済

2回答

3565閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

OpenGL ES

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

投稿2016/11/03 11:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2016/11/03 11:07

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/03 11:45

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

2016/11/03 11:46

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問