web-dev-qa-db-ja.com

Android 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 :)

16

ImageViewとProgressbarをRelativeLayoutに配置します。 ProgressBarには、以下を使用します。

Android:layout_centerInParent="true"

RelativeLayoutの中央に配置されます。つまり、ImageViewの上に配置されます。画像が読み込まれたときに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>
34
Lucas Arrefelt

これが私の解決策です。少し違います。これを使用して、画像と進行状況バーを備えたイントロビューを作成できます。ここでは、プログレスバーは中央の下150 dpにあります。 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>
5
Denis Kutlubaev