• 大小: 0.01M
    文件类型: .java
    金币: 2
    下载: 1 次
    发布日期: 2021-06-23
  • 语言: Java
  • 标签: 其他  

资源简介

HorizontalListView.java

资源截图

代码片段和文件信息

package com.goood.tshirtdesign.view.widget;


import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.onclickListener;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;

import com.goood.tshirtdesign.view.adapter.ZbaseAdapter;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 自定义HorizontalListView,水平的listview,用自定义的adapter。图片或者其他布局都可以放进去
 * @author Administrator
 *
 */
public class HorizontalListView extends HorizontalScrollView implements
onclickListenerOnTouchListenerOnLongClickListener
{

/**
 * 图片滚动时的回调接口
 * 
 * @author zhy
 * 
 */
public interface CurrentImageChangeListener
{
void onCurrentImgChanged(int position View viewIndicator);
}

/**
 * 条目点击时的回调
 * 
 * @author zhy
 * 
 */
public interface OnItemClickListener
{
void onclick(View view int pos);
}

public interface OnItemTouchListener
{
void onTouch(View view int posMotionEvent event);
}

public interface OnItemLongClickListener
{
void onLongClick(View view int pos);
}

private CurrentImageChangeListener mListener;

private OnItemClickListener monclickListener;
private OnItemTouchListener mOnTouchListener;
private OnItemLongClickListener mOnLongClickListener;

private static final String TAG = “MyHorizontalScrollView“;

/**
 * HorizontalListView中的LinearLayout
 */
private LinearLayout mContainer;

/**
 * 子元素的宽度
 */
private int mChildWidth;
/**
 * 子元素的高度
 */
private int mChildHeight;
/**
 * 当前最后一张图片的index
 */
private int mCurrentIndex;
/**
 * 当前第一张图片的下标
 */
private int mFristIndex;
/**
 * 当前第一个View
 */
private View mFirstView;
/**
 * 数据适配器
 */
private ZbaseAdapter mAdapter;
/**
 * 每屏幕最多显示的个数
 */
private int mCountOneScreen;
/**
 * 屏幕的宽度
 */
private int mScreenWitdh;


/**
 * 保存View与位置的键值对
 */
private Map mViewPos = new HashMap();

public Map getmViewPos() {
return mViewPos;
}

public HorizontalListView(Context context AttributeSet attrs)
{
super(context attrs);
// 获得屏幕宽度
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
mScreenWitdh = outMetrics.widthPixels;
}

@Override
protected void onMeasure(int widthMeasureSpec int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec heightMeasureSpec);
mContainer = (LinearLayout) getChildAt(0);
}

/**
 * 加载下一张图片
 */
protected void loadNextImg()
{
// 数组边界值计算
if (mCurrentInde

评论

共有 条评论