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

В моем классе 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-карты. Thnx заранее 🙂

Solutions Collecting From Web of "Панель прогресса Android в ImageView"

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

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