2011-06-14 56 views
0

大家好我有点困惑我一直在尝试使用库视图小部件创建菜单。我想定制它一点;我想让选定的图像放大,直到他们选择下一个。到目前为止,我已经设法扩大选定的图像,问题是当你滚动到下一个图像,他们保持放大。 我一直在试图解决这个问题,使用适配器视图来创建一个以前看过的图像的视图,所以我可以删除动画,但它不分配任何东西,创建的视图保持为空。
如何访问以前浏览的图像,以便删除动画?
干杯的任何帮助。Android图库视图问题

public class main extends ListActivity { 

private Gallery gallery; 
private Animation grow; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.main); 
gallery = (Gallery) findViewById(R.id.Gallery01); 
gallery.setAdapter(new AddImgAdp(this)); 
gallery.setOnItemSelectedListener(new OnItemSelectedListener() { 

    public void onItemSelected (AdapterView<?> parent, View v, int position, long id) { 
     Animation grow = AnimationUtils.loadAnimation(main.this, R.anim.grow); 

     View sideView = parent.findViewById(position - 1); 
     if (sideView != null){ 
      ((ImageView)sideView).clearAnimation();} 

     sideView = parent.findViewById(position + 1); 
     if (sideView != null){ 
      ((ImageView)sideView).clearAnimation();} 

     v.startAnimation(grow); 
     v.setLayoutParams(new Gallery.LayoutParams(170, 150)); 
     Toast.makeText(main.this,""+ sideView, Toast.LENGTH_SHORT).show(); 
    } 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
} 
}); 

gallery.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView parent, View v, int position, long id) { 
    } 
}); 
} 

public class AddImgAdp extends BaseAdapter { 
int GalItemBg; 
private Context cont; 


private Integer[] Imgid = { 
R.drawable.intranet, R.drawable.map,R.drawable.info,R.drawable.call2,R.drawable.youtube,R.drawable.message, 
R.drawable.facebook 
}; 

public AddImgAdp(Context c) { 
cont = c; 
TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme); 

typArray.recycle(); 
} 

public int getCount() { 
return Imgid.length; 
} 

public Object getItem(int position) { 
return position; 
} 

public long getItemId(int position) { 
return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
ImageView imgView = new ImageView(cont); 

imgView.setImageResource(Imgid[position]); 
imgView.setLayoutParams(new Gallery.LayoutParams(110, 110)); 
imgView.setScaleType(ImageView.ScaleType.FIT_XY); 
imgView.setBackgroundResource(GalItemBg); 

return imgView; 
} 
} 

} 

回答

0

在onItemSelected我会做这样的事情:

public void onItemSelected (AdapterView<?> parent, View v, int position, long id) { 
    if(mPreviousView != null) //remove logic 

    mPreviousView = v; 

    // Other View stuff ... 
} 

凡mPreviousView声明外,如:

private View mPreviousView; 

我发现这个方法来更好地工作,然后findViewById加/减逻辑。如果视图为空,那意味着我们还没有以前的视图。

+0

辉煌的工作就像一个魅力,谢谢! – scotty65 2011-06-16 12:57:23