我正在尝试为我的游戏制作一个Level选择器,现在它正在工作但是,它在某些手机上很慢而且有些时候没有工作(FC),我意识到它使用了太多的堆内存。
我对android dev很新,所以这是我的代码,希望你能帮助我。
VIEWPAGER的活动:
setContentView(R.layout.level_selector);
ViewPagerAdapter adapter = new ViewPagerAdapter(this);
ViewPager myPager = (ViewPager) findViewById(R.id.mypagerwontwork); //cool id huh
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
查看PAGER ADAPTER:
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(activity.LAYOUT_INFLATER_SERVICE);
if(position == 0)
{
View layout = inflater.inflate(R.layout.world1, null);
final GridView gridview = (GridView) layout.findViewById(R.id.gridLvl);
gridview.setAdapter(new LevelAdapter(activity,"World1"));
gridview.setOnItemClickListener(itemClickListener);
((ViewPager) collection).addView(layout);
return layout;
}
网格视图适配器:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
if (mWorld.equals("World1"))
{
imageView.setImageResource(World1[position]);
}
有用的信息:
我希望它很清楚。
感谢。
答案 0 :(得分:2)
我发现我的图像太大了,不是尺寸,而是分辨率。
我必须将它们调整为ldpi,mdpi和hdpi。
这些尺寸可在以下网址找到:
答案 1 :(得分:0)
您应该避免在getView方法中创建对象(例如在网格视图适配器中)。相反,您可以使用ViewHolder模式: