文章标题
来源:互联网 发布:游族网络定增价格2017 编辑:程序博客网 时间:2024/06/05 02:29
package com.demo.aty;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.ScrollView;
import com.blog.www.guideview.Guide;
import com.blog.www.guideview.GuideBuilder;
import com.blog.www.guideview.ScrollType;
import com.demo.component.SimpleComponent;
import static com.demo.aty.MyListActivity.TAG;
/**
* Created by Aries on 2017/5/13.
*/
public class MyScrollView extends ScrollView {
private int screenHeight = 0;/** * 要被高亮显示的view */private View targetView;/** * TargetView的高度 */private int height;Activity activity;/** * MaskView是否正显示 */private boolean isShowing;private Guide guide;private GuideBuilder builder;public GuideBuilder getBuilder() { if (builder == null) { builder = new GuideBuilder(); } return builder;}public MyScrollView(Context context) { this(context, null);}public MyScrollView(Context context, AttributeSet attrs) { this(context, attrs, 0);}public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.activity = (Activity) context;}public void setTargetView(View targetView) { if (targetView == null) { throw new RuntimeException("targetView can not be null"); } this.targetView = targetView;}
// @Override
// protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
// MeasureSpec.AT_MOST);
// super.onMeasure(widthMeasureSpec, expandSpec);
// }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)@Overrideprotected void onAttachedToWindow() { super.onAttachedToWindow(); if (targetView == null) { return; } DisplayMetrics outMetrics = new DisplayMetrics(); getDisplay().getMetrics(outMetrics); screenHeight = outMetrics.heightPixels; targetView.post(new Runnable() { @Override public void run() { height = targetView.getHeight(); } }); Log.d(TAG, "onAttachedToWindow: " + screenHeight + "控件的高度" + height);}private int[] getViewLocationOnScreen(View view) { int[] location = new int[2]; view.getLocationOnScreen(location); Log.d(TAG, "onAttachedToWindow:height of target view on screen " + location[1]); return location;}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (targetView == null) { return; } int[] viewLocationOnScreen = getViewLocationOnScreen(targetView); int targetViewHeightOnScreen = viewLocationOnScreen[1]; if (targetViewHeightOnScreen <= screenHeight - height) { //弹出引导框 int i = t - oldt; Log.d(TAG, "onScrollChanged: " + i); if (i > 0 && !isShowing) { isShowing = true; showGuideView(ScrollType.UP); } else if (i < 0 && guide != null && isShowing) { guide.dismiss(); isShowing = false; } } Log.d(TAG, "onScrollChanged: height of target view " + height); Log.d(TAG, "onScrollChanged: screen height " + screenHeight); Log.d(TAG, "onScrollChanged:height of target view on screen " + targetViewHeightOnScreen);}public void showGuideView(ScrollType scrollType) { //设置共有的配置属性属性 builder = new GuideBuilder(); builder.setAlpha(200).setScrollType(scrollType) .setTargetView(targetView) .setHighTargetCorner(20) .setHighTargetPadding(10) .setOverlayTarget(false); builder.addComponent(new SimpleComponent()); guide = builder.createGuide(); guide.setShouldCheckLocInWindow(true); guide.show(activity);}
}
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- Mysql数据库的备份
- 1050. 螺旋矩阵(25) PAT
- BLAT 安装
- 数据仓库与数据集市建模
- vsftp上传文件出现553 Could not create file
- 文章标题
- codevs 3027 线段覆盖 2 (简单dp)
- css
- Cocos2d-x键盘按键
- php中POST和GET的微妙差别
- Android学习路线指南
- pandas.Series函数用法
- 微信小程序开发一swiper轮播图的简单实现
- 有刷直流电机H桥功率驱动电路的设计心得