好吧,我有一個活動,它被分成4片段和topMost片段我用畫布繪製三角形使用路徑。動畫片段中的畫布對象來自活動
在中間片段我有一個查看尋呼機,我正在尋找一種方法來從viewPager onPageScrolled()動畫三角形。 代碼
片段
public class LoginTopCanvas extends Fragment {
private View topCanvasView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
topCanvasView = new PagerCanvasTop(getActivity());
return topCanvasView;
}
}
帆布
public class PagerCanvasTop extends View {
private String TAG = "PagerCanvasTop";
Paint redPaint;
Canvas canvas;
public PagerCanvasTop(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
this.canvas = canvas;
canvas.drawColor(getResources().getColor(R.color.bb_red));
Paint blackPaint = new Paint();
blackPaint.setColor(getResources().getColor(R.color.bb_black));
blackPaint.setAntiAlias(true);
redPaint = new Paint();
redPaint.setColor(getResources().getColor(R.color.bb_red));
redPaint.setAntiAlias(true);
redPaint.setStyle(Paint.Style.STROKE);
Paint bluePaint = new Paint();
bluePaint.setColor(Color.BLUE);
int screenWidth = this.getWidth();
int screenHeight = this.getHeight();
canvas.drawCircle(screenWidth/2, -((screenWidth * 2) - (screenWidth/15)), (screenWidth * 2), blackPaint);
//Triangle
float mid = getWidth()/2;
float min = Math.min(getWidth(), getHeight());
float fat = min/17;
float half = min/2;
redPaint.setStrokeWidth(fat);
redPaint.setStyle(Paint.Style.STROKE);
redPaint.setStyle(Paint.Style.FILL);
drawTriangle(mid, 35, half - 10, 30, 0);
canvas.drawCircle(mid, half - 10, 2, bluePaint);
canvas.drawCircle(mid-35, half+15, 2, bluePaint);
canvas.drawCircle(mid + 35, half + 15, 2, bluePaint);
super.onDraw(canvas);
}
public void drawTriangle(float x, int deltaX, float y, int deltaY, float deltaMove) {
**//this is the triangle which I want to animate**
Path path = new Path();
path.reset();
path.moveTo(x, y+deltaMove);
path.lineTo(x - deltaX, y + deltaY);
path.lineTo(x + deltaX, y + deltaY);
path.close();
canvas.drawPath(path, redPaint);
}
}
活動
在活動中我有一個查看頁面與addOnPageChangeListener.From上PageScrolled()我想動畫繪製traingle。我將如何訪問這是一個片段從myactivty
直接調用drawTriangle()在畫布上繪製的對象,並通過一個新的Canvas()給我一個NullPointerException
幫助和建議需要 謝謝