所以我尝试使用一个viewpager创建一个可打开的菜单,每个视图都有不同的菜单部分。这些部分中的每一部分都有不同的尺寸以及需要适当缩放,因此我使用了BitmapFactory。
奇怪的是,我可以创建一个BitmapFactory.Options
变量
但是当我尝试对该变量做任何事情,特别是将inJustDecodeBounds
设置为true时,Eclipse假设我正在创建另一个变量或者询问我是否要在选项中创建方法而不是
首先要认识到它。此外,如果我删除inJustDecodeBounds
并使用自动完成,则会显示一个空框“无默认提案”,因此它似乎无法识别选项是BitmapFactory.Options
变量。
导入android.graphics.Bitmap
和android.graphics.BitmapFactory
以下是相关代码:
package com.Santacruz.sleepingmoonapp;
import com.Santacruz.sleepingmoonapp.R;
import android.support.v4.view.ViewPager;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class ImageAdapter extends PagerAdapter {
Context context;
private int[] GalImages = new int[] {
R.drawable.sleepingmoonmenulogo,
R.drawable.menucoffee,
R.drawable.menusmoothies,
R.drawable.menumilkshakes,
R.drawable.menuappetizers,
R.drawable.menugoodmorning1,
R.drawable.menugoodmorning2,
R.drawable.menupaninis_1,
R.drawable.menupaninis_2,
R.drawable.menuwraps,
R.drawable.menuextras,
R.drawable.menusalad_1,
R.drawable.menubowls,
R.drawable.menufruits
};
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
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) {
Bitmap image = BitmapFactory.decodeResource(
context.getResources(),
GalImages[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_START);
imageView.setImageBitmap(image);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
编辑:这个问题很容易在多个项目中重复,这让我认为我的Eclipse副本有问题,而不是代码本身。我已经重新下载并更新了我的软件包并重新启动了Eclipse,但这没有帮助。是否有任何特定的包裹我可能会丢失?也许一些默认的项目设置正在阻碍?我有点绝望,会尝试你能想到的任何事情。
答案 0 :(得分:1)
移动你的:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
在 instantiateItem 类中:
@Override
public Object instantiateItem(ViewGroup container, int position) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap image = BitmapFactory.decodeResource(
context.getResources(),
GalImages[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_START);
imageView.setImageBitmap(image);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
它不应该给你那个恼人的错误。 :)