0

カメラからキャプチャした画面に画像を合わせるにはどうすればよいですか?現在、撮影した画像のサムネイルバージョンのようなプレビューがあります。触って画面全体にフィットさせたいです。レイアウトには、次のプロパティがあります。

android:onClick="previewPhoto"

しかし、私はどのように進めるかわかりません。これが私がすべきだと思うことですが、もっと簡単な方法があるのではないかと思います。新しいアクティビティを開始する場合、次のコードをどのように終了する必要がありますか?

public void previewPhoto(View view){
    Toast.makeText(this, "Photo touched!", Toast.LENGTH_SHORT).show();
    mImageView.setScaleType(ScaleType.FIT_XY);

    Intent fullScreenIntent = new Intent(view.getContext(),FullImageActivity.class);
    fullScreenIntent.putExtra
    //ProfilePageNormalUser.this.startActivity(fullScreenIntent); 
}

mImageViewは、キャプチャされた写真を保持するオブジェクトであることに注意してください。単に使用setScaleType(ScaleType.FIT_XY);すると、画像が小さなサムネイルビューに収まります。

4

2 に答える 2

0

写真をフル スクリーンで表示するだけで、カスタム レイアウトやボタンは必要ない場合は、次のコードを使用してギャラリー アプリ (または画像の表示をサポートする他のサードパーティ アプリ) を起動できます。

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + picturePath),"image/*");
startActivity(intent);  

編集:

カメラの起動時にpicturePathを設定できるため、画像がどこに保存されているかがわかります。こちらのメソッド takePhotoFromCamera をご覧ください。

https://github.com/miguelrodelas/Android-Snippets/blob/master/ImageSnippets.java

このメソッドは、ピクチャ パスを返します。メソッド getOutputMediaFile (そこにもあります) を使用して、日付から画像名を生成します。

于 2012-06-01T19:34:45.207 に答える
0

3つの可能な解決策ですが、それらすべてについて、ビューに新しいlayoutParamsを設定する必要があります(幅と高さの両方について、それらをfillParentに設定します):

  1. imageView で「setContentView」を使用して、新しいレイアウトとして使用します。完了したら、使用したレイアウトでこのメソッドを使用して、前のレイアウトに戻ります。

  2. ルート ビューのスペース全体を占める必要があります。この解決策は、アクティビティのレイアウトによって異なります。たとえば、レイアウトが複雑な場合は、framelayout でラップし、ビューを framelayout に移動してから、layoutParams を設定します。

  3. ビューをすべてのビューの上に設定し、layoutParams.example を設定します (例では、「ビュー」は上に設定したいものです。あなたにとっては、これは「mImageView」になります)。 :

...
final View view=findViewById(R.id.view1);
final WindowManager.LayoutParams layoutParams=new WindowManager.LayoutParams();
layoutParams.gravity=Gravity.TOP|Gravity.LEFT;
layoutParams.width=view.getLayoutParams().width;
layoutParams.height=view.getLayoutParams().height;
layoutParams.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
layoutParams.flags|=WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
final ViewGroup parent=(ViewGroup)view.getParent();
parent.removeView(view);
final WindowManager windowManager=(WindowManager)getSystemService(Context.WINDOW_SERVICE);
windowManager.addView(view,layoutParams);
// TODO handle overlapping title bar and/or action bar if needed
于 2012-06-01T19:28:33.237 に答える