diff --git a/app/build.gradle b/app/build.gradle index bbd49af..fd57dc0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,8 +33,8 @@ dependencies { //butterknife implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' -// implementation project(':easyscrollerchartviewlibrary') - implementation 'com.github.NoEndToLF:EasyScrollerChartView:1.0.1' + implementation project(':easyscrollerchartviewlibrary') +// implementation 'com.github.NoEndToLF:EasyScrollerChartView:1.0.1' //colorpicker implementation 'com.github.duanhong169:colorpicker:1.1.6' //switchbutton diff --git a/app/src/main/java/com/aice/easyscrollerchartview/NoScrollActivity.java b/app/src/main/java/com/aice/easyscrollerchartview/NoScrollActivity.java index f8d4b9c..d1ad721 100644 --- a/app/src/main/java/com/aice/easyscrollerchartview/NoScrollActivity.java +++ b/app/src/main/java/com/aice/easyscrollerchartview/NoScrollActivity.java @@ -167,7 +167,7 @@ private void initNoScroll() { //所有的点 myScrollerPointModelList = new ArrayList<>(); for (int i = 0; i < 10; i++) { - ScrollerPointModel myScrollerPointModel = new ScrollerPointModel(i, ((int) (Math.random() * 5 + 1)) * 5000); + ScrollerPointModel myScrollerPointModel = new ScrollerPointModel(((int) (Math.random() * 5 + 1)) * 5000); myScrollerPointModelList.add(myScrollerPointModel); } escView.setScrollerPointModelList(myScrollerPointModelList); diff --git a/app/src/main/java/com/aice/easyscrollerchartview/ScrollActivity.java b/app/src/main/java/com/aice/easyscrollerchartview/ScrollActivity.java index 162b4ef..71d99d6 100644 --- a/app/src/main/java/com/aice/easyscrollerchartview/ScrollActivity.java +++ b/app/src/main/java/com/aice/easyscrollerchartview/ScrollActivity.java @@ -217,7 +217,7 @@ private void initScroll(Bundle savedInstanceState) { if (myScrollerPointModelList == null) { myScrollerPointModelList = new ArrayList<>(); for (int i = 0; i < 101; i++) { - ScrollerPointModel myScrollerPointModel = new ScrollerPointModel(i, ((int) (Math.random() * 5 + 1)) * 5000); + ScrollerPointModel myScrollerPointModel = new ScrollerPointModel( ((int) (Math.random() * 5 + 1)) * 5000); myScrollerPointModelList.add(myScrollerPointModel); } } diff --git a/app/src/main/java/com/aice/easyscrollerchartview/SwipRefreshActivity.java b/app/src/main/java/com/aice/easyscrollerchartview/SwipRefreshActivity.java index a75b01e..9846937 100644 --- a/app/src/main/java/com/aice/easyscrollerchartview/SwipRefreshActivity.java +++ b/app/src/main/java/com/aice/easyscrollerchartview/SwipRefreshActivity.java @@ -96,10 +96,10 @@ public void onRefresh() { public void run() { myScrollerPointModelList.clear(); for (int i = 0; i < 101; i++) { - ScrollerPointModel myScrollerPointModel = new ScrollerPointModel(i, ((int) (Math.random() * 5 + 1)) * 5000); + ScrollerPointModel myScrollerPointModel = new ScrollerPointModel( ((int) (Math.random() * 5 + 1)) * 5000); myScrollerPointModelList.add(myScrollerPointModel); } - escView.setScrollerPointModelList(myScrollerPointModelList); + escView.notifyDataChanged(); swipe.setRefreshing(false); escView.setEnableTouch(true); } @@ -246,7 +246,7 @@ private void initScroll(Bundle savedInstanceState) { if (myScrollerPointModelList == null) { myScrollerPointModelList = new ArrayList<>(); for (int i = 0; i < 101; i++) { - ScrollerPointModel myScrollerPointModel = new ScrollerPointModel(i, ((int) (Math.random() * 5 + 1)) * 5000); + ScrollerPointModel myScrollerPointModel = new ScrollerPointModel( ((int) (Math.random() * 5 + 1)) * 5000); myScrollerPointModelList.add(myScrollerPointModel); } } diff --git a/app/src/main/java/com/aice/easyscrollerchartview/view/MyScrollerChartView.java b/app/src/main/java/com/aice/easyscrollerchartview/view/MyScrollerChartView.java index e05c0b2..62b09e1 100644 --- a/app/src/main/java/com/aice/easyscrollerchartview/view/MyScrollerChartView.java +++ b/app/src/main/java/com/aice/easyscrollerchartview/view/MyScrollerChartView.java @@ -9,9 +9,9 @@ import android.graphics.Rect; import androidx.annotation.Nullable; import android.util.AttributeSet; -import android.util.Log; import com.wxy.easyscrollerchartview.EasyScrollerChartView; +import com.wxy.easyscrollerchartview.model.DrawPiontModel; import com.wxy.easyscrollerchartview.model.ScrollerPointModel; import java.util.List; @@ -30,36 +30,31 @@ public MyScrollerChartView(Context context, @Nullable AttributeSet attrs, int de } @Override public void drawContent(Canvas canvas, Point originalPoint, List scrollerPointModelList, - int minX, int maxX, + List drawPiontModelList, float realHorizontalAverageWidth, float verticalRegionLength,Rect rect) { - Path path=new Path(); canvas.save(); canvas.clipRect(rect); - for (int i=minX;i drawPiontModelList; public void setEnableTouch(boolean enableTouch) { this.enableTouch = enableTouch; } @@ -131,7 +132,7 @@ public EasyScrollerChartView(Context context, @Nullable AttributeSet attrs) { pointTextPaint.setTextAlign(Paint.Align.CENTER); pointTextPaint.setTextSize(40); pointTextPaint.setColor(Color.BLACK); - + drawPiontModelList=new ArrayList<>(); scroller=new Scroller(context); isDrawHorizontalLine=true; isDrawVerticalLine=true; @@ -267,7 +268,7 @@ protected void onDraw(Canvas canvas) { /**画横坐标的刻度值*/ drawHorizontalLineCoordinates(canvas,originalPoint); /**画所有的点*/ - drawContent(canvas,originalPoint,scrollerPointModelList,minX,maxX,horizontalAverageWidth/horizontalAverageWeight, + drawContent(canvas,originalPoint,scrollerPointModelList,drawPiontModelList,horizontalAverageWidth/horizontalAverageWeight, verticalRegionLength,new Rect(originalPoint.x+getScrollX(),getPaddingTop(),getWidth()-getPaddingRight()+getScrollX(),getHeight()-getPaddingBottom())); if (saveInstanceStateScrollX!=0){ scrollTo((int)(saveInstanceStateScrollX*(getWidth()-getPaddingRight()-originalPoint.x)),0); @@ -289,6 +290,13 @@ public void calculateSide(float horizontalAverageWidth) { minX_horizontalCoordinates=minX_horizontalCoordinates>=0?minX_horizontalCoordinates:0; maxX_horizontalCoordinates=maxX_horizontalCoordinates<=horizontalCoordinatesList.size()?maxX_horizontalCoordinates:horizontalCoordinatesList.size(); + //准备可画的数据 + drawPiontModelList.clear(); + for (int i=minX;i scrollerPointModelList, - int minX, int maxX, + List drawPiontModelList, float RealhorizontalAverageWidth, float verticalRegionLength, Rect rect); @@ -470,7 +478,7 @@ public boolean onTouchEvent(MotionEvent event) { } int dx = (int) event.getX(activePointerIndex) - mLastX; - if (getScrollX() < 0 || getScrollX() >= ((scrollerPointModelList.size()+horizontalMin) * horizontalAverageWidth - ((getWidth() - getPaddingRight() - originalPoint.x)))) { + if (getScrollX() < 0 || getScrollX() >= ((scrollerPointModelList.size()+horizontalMin) * (horizontalAverageWidth/horizontalAverageWeight) - ((getWidth() - getPaddingRight() - originalPoint.x)))) { dx =(int) (dx * scrollSideDamping); } scrollBy(-dx, 0); @@ -484,8 +492,8 @@ public boolean onTouchEvent(MotionEvent event) { if (getScrollX() < 0) { scroller.startScroll(getScrollX(), 0, -getScrollX(), 0, 800); invalidate(); - } else if (getScrollX() >= ((scrollerPointModelList.size()+horizontalMin) * horizontalAverageWidth - ((getWidth() - getPaddingRight() - originalPoint.x)))) { - scroller.startScroll(getScrollX(), 0, (int) ((scrollerPointModelList.size()+horizontalMin) * horizontalAverageWidth - (getWidth() - getPaddingRight() - originalPoint.x) - getScrollX()), 0, 800); + } else if (getScrollX() >= ((scrollerPointModelList.size()+horizontalMin) * (horizontalAverageWidth/horizontalAverageWeight) - ((getWidth() - getPaddingRight() - originalPoint.x)))) { + scroller.startScroll(getScrollX(), 0, (int) ((scrollerPointModelList.size()+horizontalMin) * (horizontalAverageWidth/horizontalAverageWeight) - (getWidth() - getPaddingRight() - originalPoint.x) - getScrollX()), 0, 800); invalidate(); } } @@ -498,15 +506,15 @@ public boolean onTouchEvent(MotionEvent event) { if (Math.abs(clickX)<= ViewConfiguration.get(getContext()).getScaledTouchSlop()&& Math.abs(clickY)<= ViewConfiguration.get(getContext()).getScaledTouchSlop()){ if (onClickListener!=null){ - onClickListener.onClick(((event.getX()+getScrollX())-originalPoint.x)/horizontalAverageWidth*horizontalAverageWeight-horizontalMin, + onClickListener.onClick(((event.getX()+getScrollX())-originalPoint.x)/(horizontalAverageWidth/horizontalAverageWeight)*horizontalAverageWeight-horizontalMin, (originalPoint.y- event.getY())/verticalRegionLength*(verticalMax-verticalMin)+verticalMin); } if (isScoll){ if (getScrollX()<0){ scroller.startScroll(getScrollX(),0,-getScrollX(),0,800); invalidate(); - }else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-((getWidth()-getPaddingRight()-originalPoint.x)))){ - scroller.startScroll(getScrollX(),0,(int) ((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-(getWidth()-getPaddingRight()-originalPoint.x)-getScrollX()),0,800); + }else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-((getWidth()-getPaddingRight()-originalPoint.x)))){ + scroller.startScroll(getScrollX(),0,(int) ((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-(getWidth()-getPaddingRight()-originalPoint.x)-getScrollX()),0,800); invalidate(); }} }else { @@ -514,15 +522,15 @@ public boolean onTouchEvent(MotionEvent event) { if (getScrollX()<0){ scroller.startScroll(getScrollX(),0,-getScrollX(),0,800); invalidate(); - }else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-((getWidth()-getPaddingRight()-originalPoint.x)))){ - scroller.startScroll(getScrollX(),0,(int) ((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-(getWidth()-getPaddingRight()-originalPoint.x)-getScrollX()),0,800); + }else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-((getWidth()-getPaddingRight()-originalPoint.x)))){ + scroller.startScroll(getScrollX(),0,(int) ((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-(getWidth()-getPaddingRight()-originalPoint.x)-getScrollX()),0,800); invalidate(); }else{ final int pointerId = event.getPointerId(0); mVelocityTracker.computeCurrentVelocity(1000, ViewConfiguration.getMaximumFlingVelocity()); final int velocityX = (int)mVelocityTracker.getXVelocity(pointerId); isFling=true; - scroller.fling(getScrollX(),0,-velocityX,0,-(getWidth()-getPaddingRight()-originalPoint.x),(int) (scrollerPointModelList.size()*horizontalAverageWidth)+(getWidth()-getPaddingRight()-originalPoint.x),0,0); + scroller.fling(getScrollX(),0,-velocityX,0,-(getWidth()-getPaddingRight()-originalPoint.x),(int) (scrollerPointModelList.size()*(horizontalAverageWidth/horizontalAverageWeight))+(getWidth()-getPaddingRight()-originalPoint.x),0,0); invalidate(); if (mVelocityTracker != null) { mVelocityTracker.clear(); @@ -575,9 +583,9 @@ public void computeScroll() { scroller.startScroll(getScrollX(),0,-getScrollX(),0,800); invalidate(); } - else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-((getWidth()-getPaddingRight()-originalPoint.x)))){ + else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-((getWidth()-getPaddingRight()-originalPoint.x)))){ isFling=false; - scroller.startScroll(getScrollX(),0,(int) ( ((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-((getWidth()-getPaddingRight()-originalPoint.x)))-getScrollX()),0,800); + scroller.startScroll(getScrollX(),0,(int) ( ((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-((getWidth()-getPaddingRight()-originalPoint.x)))-getScrollX()),0,800); invalidate(); } }else { @@ -587,10 +595,10 @@ else if (getScrollX()>=((scrollerPointModelList.size()+horizontalMin) *horizonta scroller.startScroll(getScrollX(),0,-getScrollX(),0,800); invalidate(); - }else if (getScrollX()>= ((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-((getWidth()-getPaddingRight()-originalPoint.x))+((getWidth()-getPaddingRight()-originalPoint.x))/2)){ + }else if (getScrollX()>= ((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-((getWidth()-getPaddingRight()-originalPoint.x))+((getWidth()-getPaddingRight()-originalPoint.x))/2)){ scroller.abortAnimation(); isFling=false; - scroller.startScroll(getScrollX(),0,(int) ( ((scrollerPointModelList.size()+horizontalMin) *horizontalAverageWidth-((getWidth()-getPaddingRight()-originalPoint.x)))-getScrollX()),0,800); + scroller.startScroll(getScrollX(),0,(int) ( ((scrollerPointModelList.size()+horizontalMin) *(horizontalAverageWidth/horizontalAverageWeight)-((getWidth()-getPaddingRight()-originalPoint.x)))-getScrollX()),0,800); invalidate(); }else { scrollTo(scroller.getCurrX(), scroller.getCurrY()); @@ -667,6 +675,7 @@ public List getScrollerPointModelList() { public void setScrollerPointModelList(List scrollerPointModelList) { this.scrollerPointModelList = scrollerPointModelList; + originalPoint=null; invalidate(); } @@ -693,15 +702,15 @@ public void reSetCoordinates() { public void notifySettingChanged() { invalidate(); } + public void notifyDataChanged() { + originalPoint=null; + invalidate(); + } public interface onClickListener{ void onClick(float x,float y); } public interface onPromiseParentTouchListener{ void onPromiseTouch(boolean promise); } - public enum ScrollDirection{ - PullDown, - UpSlip, - None, - } + } diff --git a/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/DrawPiontModel.java b/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/DrawPiontModel.java new file mode 100644 index 0000000..988240d --- /dev/null +++ b/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/DrawPiontModel.java @@ -0,0 +1,27 @@ +package com.wxy.easyscrollerchartview.model; + +public class DrawPiontModel { + private float x; + private float y; + + public DrawPiontModel(float x, float y) { + this.x = x; + this.y = y; + } + + public float getX() { + return x; + } + + public void setX(float x) { + this.x = x; + } + + public float getY() { + return y; + } + + public void setY(float y) { + this.y = y; + } +} diff --git a/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/ScrollerPointModel.java b/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/ScrollerPointModel.java index 9c46b39..eaea679 100644 --- a/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/ScrollerPointModel.java +++ b/easyscrollerchartviewlibrary/src/main/java/com/wxy/easyscrollerchartview/model/ScrollerPointModel.java @@ -4,26 +4,14 @@ import android.os.Parcelable; public class ScrollerPointModel implements Parcelable { - protected float x; protected float y; - public float getX() { - return x; - } - - public void setX(float x) { - this.x = x; - } - public float getY() { return y; } - public void setY(float y) { this.y = y; } - - public ScrollerPointModel(long x, long y) { - this.x = x; + public ScrollerPointModel(long y) { this.y = y; } @@ -34,12 +22,10 @@ public int describeContents() { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeFloat(this.x); dest.writeFloat(this.y); } protected ScrollerPointModel(Parcel in) { - this.x = in.readFloat(); this.y = in.readFloat(); }