显示完整图像而不在ViewPager中剪切它 - 如何解决这个问题



我想在android.support.v4.view.ViewPager上显示一个没有剪切高度/宽度的完整图像,但是当ImagePagerAdapter适配器中的设置图像时,图像会从我的图片库中的两侧裁剪。

请帮助我:如何在查看器中显示完整图像?

TOTAL_IMAGE=mAllImages.length-1;
viewpager=(ViewPager)findViewById(R.id.image_slider);
handler=new Handler();
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewpager.setAdapter(adapter);
viewpager.setCurrentItem(position);

布局文件

<include
    android:id="@+id/toolbar"
    layout="@layout/toolbar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
    android:id="@+id/image_slider"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_below="@+id/toolbar"
    >
</android.support.v4.view.ViewPager>

爪哇类

int position;
String[] mAllImages,mAllImageCatName,mAllItemId,mAllImageCatDate;
public DatabaseHandler db;
ImageView vp_imageview;
ViewPager viewpager;
int TOTAL_IMAGE;
private SensorManager sensorManager;
private boolean checkImage = false;
private long lastUpdate;
Handler handler;
Runnable Update;
boolean Play_Flag=false;
private Menu menu;
private DatabaseHandler.DatabaseManager dbManager;
String  Image_catName,Image_Url,Image_Date;
Bitmap bgr;
DisplayImageOptions options;
Toolbar toolbar;
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.image_slider);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    db = new DatabaseHandler(this);
    dbManager = DatabaseHandler.DatabaseManager.INSTANCE;
    dbManager.init(getApplicationContext());
    options = new DisplayImageOptions.Builder()
    .showImageForEmptyUri(R.drawable.ic_launcher)
    .showImageOnFail(R.drawable.ic_launcher)
    .resetViewBeforeLoading(true)
    .cacheOnDisc(true)
    .imageScaleType(ImageScaleType.EXACTLY)
    .bitmapConfig(Bitmap.Config.RGB_565)
    .considerExifParams(true)
    .displayer(new FadeInBitmapDisplayer(300))
    .build();
    Intent i=getIntent();
    position=i.getIntExtra("POSITION_ID", 0);
    mAllImages=i.getStringArrayExtra("IMAGE_ARRAY");
    mAllImageCatName=i.getStringArrayExtra("IMAGE_CATNAME");
    mAllImageCatDate=i.getStringArrayExtra("IMAGE_CATDATE");
    mAllItemId=i.getStringArrayExtra("ITEMID");

    TOTAL_IMAGE=mAllImages.length-1;
    viewpager=(ViewPager)findViewById(R.id.image_slider);
    handler=new Handler();
     ImagePagerAdapter adapter = new ImagePagerAdapter();
     viewpager.setAdapter(adapter);
     viewpager.setCurrentItem(position);
     sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
     lastUpdate = System.currentTimeMillis();
     viewpager.setOnPageChangeListener(new OnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // TODO Auto-generated method stub
            position=viewpager.getCurrentItem();
            Image_Url=mAllImages[position];
            List<Pojo> pojolist=db.getFavRow(Image_Url);
            if(pojolist.size()==0)
            {
                 menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_star_outline));
            }
            else
            {
                if(pojolist.get(0).getImageurl().equals(Image_Url))
                {
                     menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_star_white));
                }
            }
        }

图像适配器类

private class ImagePagerAdapter extends PagerAdapter {
    private LayoutInflater inflater;
    public ImagePagerAdapter() {
        // TODO Auto-generated constructor stub
        inflater = getLayoutInflater();
    }
     @Override
    public int getCount() {
      return mAllImages.length;
    }
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View imageLayout = inflater.inflate(R.layout.viewpager_item, container, false);
        assert imageLayout != null;
        ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
        TextView txt1 = (TextView) imageLayout.findViewById(R.id.txt1);
        TextView txt2 = (TextView) imageLayout.findViewById(R.id.txt2);
        final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);
         txt1.setText(mAllImageCatName[position]);
        txt2.setText(mAllImageCatDate[position]);
         ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(getApplicationContext()));
         ImageLoader.getInstance().displayImage(Constant.SERVER_IMAGE_DETAILS+mAllImages[position], imageView, options, new SimpleImageLoadingListener() {
                @Override
                public void onLoadingStarted(String imageUri, View view) {
                    spinner.setVisibility(View.VISIBLE);
                }
                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    String message = null;
                    switch (failReason.getType()) {
                        case IO_ERROR:
                            message = "Input/Output error";
                            break;
                        case DECODING_ERROR:
                            message = "Image can't be decoded";
                            break;
                        case NETWORK_DENIED:
                            message = "Downloads are denied";
                            break;
                        case OUT_OF_MEMORY:
                            message = "Out Of Memory error";
                            break;
                        case UNKNOWN:
                            message = "Unknown error";
                            break;
                    }
                    Toast.makeText(SlideImageActivity.this, message, Toast.LENGTH_SHORT).show();
                    spinner.setVisibility(View.GONE);
                }
                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    spinner.setVisibility(View.GONE);
                }
            });
        container.addView(imageLayout, 0);
        return imageLayout;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
         ((ViewPager) container).removeView((View) object);
    }
  }

在适配器项目中,将图像视图比例类型设置为适合以进行拟合

android:scaleType="fitXY"

或者,也可以以编程方式设置缩放类型:

     ImageView image = findviewbyId(R.id.image);
     image.setScaleType(ImageView.ScaleType.FITXY);

您还可以检查其他比例类型:中心作物,中心内部等

ImageView.ScaleType FIT_XY希望它可以帮助您尝试在适配器内设置膨胀ImageView scaleType或您正在ViewPager加载的某些片段。

最新更新