画像をフルスクリーンで表示したいAndroidアプリを開発しています。次に、この画像の上に小さな「ウィンドウ」を表示します。
- ウィンドウは、ユーザーが画面に触れる場所に配置されます。
- このウィンドウの内容は、拡大された元の画像の一部です。拡大された画像の部分は、ユーザーが画面に触れた位置によっても定義されます。
このようにして、ユーザーが画面に沿って指を動かすと、「ウィンドウ」が指に追従し、元の画像のズーム バージョンが表示されます。
今までは、ズームされた画像で「ウィンドウ」の内容を更新することを除いて、やりたいことはすべてできました。
次のコードを書きました。
public class DetectEyesActivity extends Activity implements OnTouchListener {
//DetectEyesView detectEyesView;
//LinearLayout mLinearLayout;
TextView text;
ImageView imgView;
Bitmap imgBitmap;
ImageView touchView2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.detecteyeslayout);
Intent intent = this.getIntent();
byte[] image = intent.getByteArrayExtra("Image");
text = (TextView) findViewById(R.id.detectEyesTextView1);
imgView = (ImageView) findViewById(R.id.detectEyesImageView1);
imgBitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
imgView.setImageBitmap(imgBitmap);
//imgView.setOnTouchListener(this);
text.setTextSize(30);
text.setText("A");
touchView2 = (ImageView) findViewById(R.id.detectEyesImageView2);
Bitmap temp = Bitmap.createBitmap(imgBitmap, 200, 200, 200, 200);
touchView2.setImageBitmap(temp);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//event.getX()
int y = (int)event.getY();
int x = (int)event.getX();
float aux = (float)imgBitmap.getHeight() / (float)imgView.getHeight();
//float imgBitmapHeight =
//float imgBitmapWidth = (float)imgBitmap.getWidth()/aux
float imgDrawableX = (imgView.getWidth() - (float)imgBitmap.getWidth()/aux ) / 2 + imgView.getX();
float imgDrawableY = (imgView.getHeight() - (float)imgBitmap.getHeight()/aux ) / 2 + imgView.getY();
text.setText("TouchX = " + x + " TouchY = " + y + " ImageX: "+ imgDrawableX + " ImageY: "+ imgDrawableY + " aux = " + aux);
Bitmap temp = Bitmap.createBitmap(imgBitmap, x, y, 50, 50);
//touchView2.setImageBitmap(temp);
touchView2.setVisibility(0);
touchView2.bringToFront();
touchView2.layout(x-200, y-200, x-30, y-30);
touchView2.postInvalidate();
touchView2.invalidate();
Log.v("x,y",event.getY()+","+event.getX());
return true;
}
このコードでは、ウィンドウは内容を更新せずに指に従います。行のコメントを外すと
//touchView2.setImageBitmap(temp);
ウィンドウは単に表示されません。それにもかかわらず、textView のコンテンツは更新され続けます。だから私は onTouchEvent が実行されていることを知っています。
なぜこれが起こっているのか誰にも分かりますか?
前もって感謝します。