資源簡介
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
- 上一篇:Java的計算器含代碼和報告
- 下一篇:android 屏幕測試源碼
評論
共有 條評論