ImageView 上的 Android 进度条

标签 android android-asynctask progress-bar

我正在开发一个应用程序,用户将从相机拍摄照片并将其显示在具有 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);
}

在我的 Preview 类中,捕获的图片显示在 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 卡加载捕获的图像。 提前谢谢:)

最佳答案

把你的 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>

关于ImageView 上的 Android 进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341840/

相关文章:

android - 如何拖拽画线?

java - Android如何从其他类更新(UI线程)(真的吗?)

delphi - 标签标题在 ProgressBar 内的位置

android - 如何在android中创建加载屏幕?

java - 在内部类中访问变量。将对话框添加到 ListView 时需要声明为final

java - 在客户端手机上签署 APK

android - 我怎样才能实现这个 ListView 动画?

android - AsyncTask 的工作线程阻塞 UI 线程

android - 从新类中获取内部类

java - 在android中创建渐变进度条