自定义表情控件:
public class FaceView extends LinearLayout {
private Context mContext;
private OnItemClickListener mListener;
private int mCurrentPageNumber;
public int getCurrentPageNumber() {
return mCurrentPageNumber;
}
public CustomGridview(Context context) {
super(context);
this.mContext = context;
init(context);
}
public CustomGridview(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
init(context);
}
private void init(Context context) {
setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
setOrientation(LinearLayout.VERTICAL);
View customgridview = LayoutInflater.from(context).inflate(R.layout.face, null, false);
addView(customgridview);
}
private List<Map<String, Object>> getFaceData(int n) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
int[] arr = FaceUtil.getFaceUtil().faceIds;
for(int i = n*28; arr.length > i && i< n*28 + 28; i++){
map = new HashMap<String, Object>();
map.put("face", arr[i]);
list.add(map);
}
return list;
}
private List<Integer> getFaceViewIds(){
List<Integer> viewIds = new ArrayList<Integer>();
viewIds.add(R.id.face_item_iv);
return viewIds;
}
private GridView initFaceUI(Context context, int len){
GridView gridView = new GridView(context);
gridView.setAdapter(new MainBaseAdapter(context, R.layout.face_item, getFaceViewIds(), getFaceData(len)));
gridView.setNumColumns(7);
gridView.setColumnWidth(80);
gridView.setHorizontalSpacing(1);
gridView.setVerticalSpacing(1);
gridView.setGravity(Gravity.CENTER);
gridView.setBackgroundColor(Color.parseColor("#f2f2f2"));
gridView.setOnItemClickListener(mListener);
return gridView;
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.mListener = listener;
//表情界面左右拖动控件类
ScrollViewGroup scrollViewGroup = (ScrollViewGroup) findViewById(R.id.scrollViewGroup);
//加入2页表情
for (int i = 0; i < 2; i++) {
scrollViewGroup.addView(initFaceUI(mContext, i));
}
scrollViewGroup.setCurrentPageNumber(0);
//当拖动表情界面时更新底部图标为选中状态
scrollViewGroup.setOnScrollListener(new OnScrollListener() {
@Override
public void onSroll(int currentPage) {
mCurrentPageNumber = currentPage;
}
});
//底部图标切换类
PageControlView pageControlView = (PageControlView) findViewById(R.id.pageControlView);
pageControlView.bindScrollViewGroup(scrollViewGroup);
}
}
face.xml: