学习过程中的一点心得,代码很简单,所有直接贴上核心的代码:
MainActivty.java
@Override
public void onCreate(Bundle savedInstanceState)
{
// ...省略的代码
/**
* 设置滚动到指定项的方法
*/
scView = (HorizontalScrollView)
findViewById(R.id.galleryScroll);
scView.post(new Runnable()
{
@Override
public void run()
{
scView.scrollTo(DisplayUtil.dip2px(AlbumUI.this, 95 * index), 0); // 将dp转换成px分辨率
}
});
albumGallery.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
albumAdapter.changeStatus(position); // 改变状态
albumAdapter.notifyDataSetChanged(); // 通知CustomAdapter数据有更改,并更新数据
}
});
albumGallery.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
v.clearFocus();
return false;
}
});
// ...省略的代码
}
CustomAdapter.java
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// ...省略的代码
// 此条件语句只运行一次,作用是默认哪项被选中
if (flag == true)
{
changeStatus(index);
flag = false;
}
if (aItem.isSelect())
{
widget.photoFrameImg.setBackgroundResource(R.drawable.selected);
}
else
{
widget.photoFrameImg.setBackgroundDrawable(null);
}
// ...省略的代码
}
/**
* 改变选择状态的方法
*/
public void changeStatus(int select)
{
for (int i=0; i<list.size(); i++)
{
list.get(i).setSelect(false);
}
list.get(select).setSelect(true);
}
ConvertResolutionTools.java,如果你有需要的话。
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue)
{
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}