Масштабирование выбранного изображения в галерее

Как я мог масштабировать выбранное изображение в Галерее, я пробовал это, но он работает не очень хорошо. `

public void onItemSelected (AdapterView<?> parent, View v, int position, long id) { Animation grow = AnimationUtils.loadAnimation(DetailTvShow.this, R.anim.grow); Button btn = (Button)findViewById(R.id.button1); btn.setText("saison "+(position+1)); View sideView = v.findViewById(position + 1); View sideView1 = v.findViewById(position - 1); if ((sideView != null)||(sideView1 != null)){ ((ImageView)sideView).setLayoutParams(new Gallery.LayoutParams(80, 115)); ((ImageView)sideView1).setLayoutParams(new `enter code here`Gallery.LayoutParams(80, 115)); } /* sideView = parent.findViewById(position + 1); if (sideView != null) ((ImageView)sideView).setLayoutParams(new Gallery.LayoutParams(80, 115)); */ v.startAnimation(grow); v.setLayoutParams(new Gallery.LayoutParams(105, 140)); }` 

У меня была одна и та же проблема, было аналогичное решение для того, которое я расскажу здесь о переполнении стека, но это не сработало правильно, хотя взгляды будут масштабироваться, в конечном итоге они перестанут возвращаться к их первоначальному размеру.

Здесь измененное исправление, которое я нашел для себя, пока что работает нормально и не вызывает никаких проблем.

В res / anim создать файл grow.xml для изменения размеров до того, что работает для вас

 <?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="1.0" android:toXScale="1.075" android:fromYScale="1.0" android:toYScale="1.075" android:duration="150" android:pivotX="50%" android:pivotY="50%" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fillAfter="true"> </scale> 

Скопируйте этот класс и поместите его в свою унаследованную галерею или прямо в свою деятельность

  private class SelectListener implements AdapterView.OnItemSelectedListener { private Animation grow = null; private View lastView = null; public SelectListener(Context c) { grow = AnimationUtils.loadAnimation(c, R.anim.grow); } public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { // Shrink the view that was zoomed try { if (null != lastView) lastView.clearAnimation(); } catch (Exception clear) { } // Zoom the new selected view try { v.startAnimation(grow); } catch (Exception animate) {} // Set the last view so we can clear the animation lastView = v; } public void onNothingSelected(AdapterView<?> parent) { } } 

Затем, после того как вы создали свой класс галереи и подключили адаптер

 yourGalleryName.setOnItemSelectedListener(new SelectListener(this)); 

Это сработало для меня, дайте мне знать, если это будет сделано для вас.

Возможно, это поможет вам встать на правильный путь:

 public class bitmaptest extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); LinearLayout linLayout = new LinearLayout(this); // load the origial BitMap (500 x 500 px) Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.android); int width = bitmapOrg.width(); int height = bitmapOrg.height(); int newWidth = 200; int newHeight = 200; // calculate the scale - in this case = 0.4f float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // createa matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); // rotate the Bitmap matrix.postRotate(45); // recreate the new Bitmap Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width, height, matrix, true); // make a Drawable from Bitmap to allow to set the BitMap // to the ImageView, ImageButton or what ever BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); ImageView imageView = new ImageView(this); // set the Drawable on the ImageView imageView.setImageDrawable(bmd); // center the Image imageView.setScaleType(ScaleType.CENTER); // add ImageView to the Layout linLayout.addView(imageView, new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT ) ); // set LinearLayout as ContentView setContentView(linLayout); } 

}