Подтвердить что ты не робот

Панель прогресса 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 );

Есть ли способ показать индикатор выполнения на ImageView, пока он не загрузит захваченное изображение с SD-карты. Thnx заранее:)

4b9b3361

Ответ 1

Поместите свой 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>

Ответ 2

Это мое решение. Это немного другое. Вы можете использовать его для создания представления с изображением и индикатором выполнения. Здесь индикатор выполнения находится на уровне 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>