本文共 11429 字,大约阅读时间需要 38 分钟。
public class MeasureUtil { /** * 获取状态栏的高度 */ public static int getStatusBarHeight(Context context) { int result = 0; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } /** * 获取导航栏的高度 */ public static int getNavigationBarHeight(Context context) { int result = 0; int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } /** * 获取屏幕尺寸 */ public static Point getScreenSize(Context context) { // 获取屏幕宽高 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Point screenSize = new Point(); wm.getDefaultDisplay().getSize(screenSize); return screenSize; } /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将px值转换为sp值,保证文字大小不变 */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变 */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * 百分比转换为实际的像素值(宽度) */ public static int per2px(Resources res, double per) { if (null == res) { return 0; } if (per < 0 || per > 1) { return 0; } DisplayMetrics dm = res.getDisplayMetrics(); return (int) Math.ceil(dm.widthPixels * per); } } --------------------------------------------------------------------- 布局代码: 自定义View: public class BannerView extends LinearLayout { /** * 上下文 */ private Context mContext; /** * 图片轮播视图 */ private ViewPager mAdvPager = null; /** * 滚动图片视图适配器 */ private ImageCycleAdapter mAdvAdapter; /** * 图片轮播指示器控件 */ private LinearLayout mGroup; /** * 图片轮播指示器-个图 */ private ImageView mImageView = null; /** * 滚动图片指示器-视图列表 */ private ImageView[] mImageViews = null; /** * 图片滚动当前图片下标 */ private int mImageIndex = 0; /** * @param context */ public BannerView(Context context) { super(context); } /** * @param context * @param attrs */ public BannerView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; LayoutInflater.from(context).inflate(R.layout.banner_layout, this); mAdvPager = (ViewPager) findViewById(R.id.adv_pager); mAdvPager.addOnPageChangeListener(new GuidePageChangeListener()); mAdvPager.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: // 开始图片滚动 startImageTimerTask(); break; default: // 停止图片滚动 stopImageTimerTask(); break; } return false; } }); // 滚动图片右下指示器视图 mGroup = (LinearLayout) findViewById(R.id.viewGroup); } /** * 设置图片数据源 * @param imageUrlList 图片集合(数据类型:String->URL or Integer->ResourceID) * @param imageCycleViewListener */ public void setImageResources(ArrayList
转载地址:http://agjtb.baihongyu.com/