学习过程中的一点心得,代码很简单,所有直接贴上核心的代码:
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);
- }