2012-09-09 3 views
13

私は、カメラから画像を撮影し、画像ビューのプレビュー画面に表示するアプリを開発中です。私のプレビュークラスでImageViewのアンドロイドプログレスバー

**CameraCapture.java** 

class ButtonClickHandler implements View.OnClickListener 
{ 
    public void onClick(View view){ 
     myVib.vibrate(50); 
     startCameraActivity(); 
    } 
} 

protected void startCameraActivity() 
{ 
    File filenew = new File(_path); 
    Uri outputFileUri = Uri.fromFile(filenew); 

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
    startActivityForResult(intent, 0); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    switch(resultCode) 
    { 
     case 0: 
      break; 

     case -1: 
      //pictaken++; 

      onPhotoTaken(); 

      break; 
    } 
} 

protected void onPhotoTaken() 
{ 
    //pictaken=true; 

    Intent i = new Intent(CameraCapture.this,Preview.class); 
    startActivity(i); 
} 

キャプチャした画像は、ImageViewの

**Preview.java** 

File imgFile = new File("/sdcard/DCIM/Camera/test.jpg"); 
if(imgFile.exists()){ 

    // Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

    ImageView myImage = (ImageView) findViewById(R.id.image); 
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
    Matrix mat = new Matrix(); 
    String degree="90"; 
    mat.postRotate(Integer.parseInt(degree)); 
    Bitmap bMapRotate = Bitmap.createBitmap(myBitmap, 0, 0,myBitmap.getWidth(),myBitmap.getHeight(), mat, true); 
    myImage.setImageBitmap(bMapRotate); 
    //myImage.setImageBitmap(myBitmap); 

} 
_image = (ImageView) findViewById(R.id.image); 

に表示され、それはSDカードから取り込んだ画像を読み込むまでImageViewの上のプログレスバーを表示する方法がありますです。 Thnx in advance:

答えて

30

RelativeLayoutにImageViewとProgressbarを配置します。あなたのProgressBarの使用:ImageViewの上を意味し、RelativeLayoutでそれを中心に説明する

android:layout_centerInParent="true" 

。画像がロードされたときにProgressBarを非表示にすることもできます。

progressBar.setVisibility(View.Gone) 

画像がロードされているとき。

サンプルコード:

<RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true"/> 

     <ProgressBar 
      style="?android:attr/progressBarStyleSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:visibility="visible"/> 

    </RelativeLayout> 
+0

素晴らしいですが、イメージが読み込まれたときに通知を受け取る方法はありますか? –

3

これは私のソリューションです。それは少し違います。これを使用して、画像と進行状況バーでイントロビューを作成できます。ここで、進捗バーは中央の150dpにあります。 FrameLayoutも使用できます。

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:contentDescription="@string/intro_description" 
     android:scaleType="fitXY" 
     android:src="@drawable/intro" /> 

    <ProgressBar 
     android:id="@+id/progress" 
     style="?android:attr/progressBarStyle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginTop="150dp" 
     android:visibility="visible" /> 

</FrameLayout>