为什么我在viewpager中无法全屏查看图像的某些部分?

时间:2014-08-23 22:15:20

标签: java android xml gallery

我开发了一个应用程序,可以在查看器中显示位于drawable文件夹中的图像。但是,当图像以全屏显示时,图像的某些部分不会出现。我该如何解决这个问题?以下是我的代码..

MainActivity.java

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ShareActionProvider;




public class MainActivity extends Activity {

    MediaPlayer oursong;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
      oursong = MediaPlayer.create(MainActivity.this, R.raw.a);
      oursong.start ();
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
    ImageAdapter adapter = new ImageAdapter(this);
    viewPager.setAdapter(adapter);
  }

  private ShareActionProvider mShareActionProvider;


  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate menu resource file.
      getMenuInflater().inflate(R.menu.activity_main, menu);

      // Locate MenuItem with ShareActionProvider
      MenuItem item = menu.findItem(R.id.menu_item_share);

      // Fetch and store ShareActionProvider
      mShareActionProvider = (ShareActionProvider) item.getActionProvider();

      // Return true to display menu
      return true;
  }

  // Call to update the share intent
  private void setShareIntent(Intent shareIntent) {
      if (mShareActionProvider != null) {
          mShareActionProvider.setShareIntent(shareIntent);
      }
  }

     @Override
     protected void onPause(){
     super.onPause();
      oursong.release();
 }

}

Imageadapter.java

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ImageAdapter extends PagerAdapter {
    Context context;
    private int[] GalImages = new int[] {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three
    };
    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
      return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
      return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_small);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP  );
      imageView.setImageResource(GalImages[position]);
      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }
  }

dimens.xml

<resources>
  <dimen name="padding_small">4dp</dimen>
  <dimen name="padding_medium">8dp</dimen>
  <dimen name="padding_large">16dp</dimen>
</resources>

我刚开始编程,所以请给出一些解释,或者如果你也提供一些代码就会很棒......

2 个答案:

答案 0 :(得分:0)

  imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或大于视图的相应尺寸(减去填充)。

这是预期的行为。如果您不希望裁剪,请改用ImageView.ScaleType.CENTER_INSIDE

如果不需要保留比例,请使用ImageView.ScaleType.FIT_XY

答案 1 :(得分:0)

将您的ScaleType从CENTER_CROP更改为CENTER_INSIDE

@Override
public Object instantiateItem(ViewGroup container, int position) {
  ImageView imageView = new ImageView(context);
  int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_small);
  imageView.setPadding(padding, padding, padding, padding);
  imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE  );
  imageView.setImageResource(GalImages[position]);
  ((ViewPager) container).addView(imageView, 0);
  return imageView;
}