AndroidでのView図面のまとめ


AndroidではViewをカスタマイズする際に、図形描画操作が用いられることが多いが、以下では主に関連関数をまとめる.
ViewのonDraw()関数では、キャンバスに相当するCanvasを使用して描画するのが一般的です.
一、Canvas canvasの操作には3つの種類があります.1、save、restoreなどのレイヤ保存とロールバックに関する方法は、saveを実行するたびに、現在の描画内容を1つのレイヤとして保存することに相当します.これらの後の描画は別のレイヤに進み、restoreを実行すると、前にキャッシュされたレイヤに戻ることに相当します.レイヤーのキャッシュはスタック形式で保存されます.
2、scale、rotate、translate、skew、clipなどのキャンバスの操作方法.
クリップ機能を実現Canvasは、clipPath、ClipRect、ClipRegionなどの方法でclipPath clipRect clipRegionをクリップ
キャンバスのスケール、回転、平行移動、または誤接効果scale rotate translate skewを実現
具体的な参考文章:Canvasのtranslate、scale、rotate、skewの方法は説明します!
3、drawXXX等の製図方法
ツールバーの
(1)キャンバスカラーでdrawargdrawColor drawRGBを塗りつぶす
点を描くdrawPoint点を描くdrawPoint複数の点を描くdrawPoint
線引きdrawLine線引きdrawArc円弧を描くdrawPath線引きパスdrawRect drawRoundRect角丸長方形を描く
描画形状drawOval描画楕円drawRect描画矩形
描画drawBitmap描画ビットマップdrawBitmapMesh描画ツイストビットマップdrawPicture
描画テキストdrawText描画文字列drawTextOnPathパスに沿って描画文字列drawTextRun drawPosText
二、ペインがCanvasを使うときによく使うペインについてですが、ペインクラスを見てみましょう
1.グラフィック描画設定setarg(int a,int r,int g,int b);描画する色を設定します.aは透明度を表し、r,g,bは色値を表します.
setAlpha(int a); グラフィックの透明度を設定します.
setColor(int color); 透明度とRGBの色を含む色の値を使用して描画する色を設定します.
setAntiAlias(boolean aa); アンチエイリアシング機能を使用するかどうかを設定すると、リソースが消費され、グラフィックの描画速度が遅くなります.
setDither(boolean dither); 画像のジッタ処理を使用するかどうかを設定すると、描画された画像の色がより滑らかで豊かになり、画像がより鮮明になります.
setFilterBitmap(boolean filter); このオプションがtrueに設定されている場合、Bitmapイメージの最適化操作がアニメーションの進行中にフィルタリングされ、表示速度が速くなります.このオプションはditherとxfermodeの設定に依存します.
setMaskFilter(MaskFilter maskfilter); MaskFilterを設定すると、異なるMaskFilterでフィルターの効果を実現できます.例えば、フィルター化、立体化などです.
setColorFilter(ColorFilter colorfilter); カラーフィルタを設定すると、色をペイントするときに色を使わない変換効果が得られます.
setPathEffect(PathEffect effect); 点線などの描画パスの効果を設定します.
setShader(Shader shader); 画像効果を設定し、Shaderを使用して各種のグラデーション効果、クラスandroidを描画することができる.graphics.Shaderには、BitmapShader、LinearGradient、RadialGradient、SweepGradient、ComposeShaderの5つのサブクラスがあります.
setShadowLayer(float radius ,float dx,float dy,int color); グラフィックの下にシャドウレイヤを設定し、シャドウ効果を生成します.radiusはシャドウの角度、dxとdyはシャドウのx軸とy軸の距離、colorはシャドウの色です.
setStyle(Paint.Style style); ブラシのスタイルを設定します.FILL、FILL_OR_STROKE、またはSTROKE
setStrokeCap(Paint.Cap cap); ブラシスタイルがSTROKEまたはFILLの場合OR_STROKEの場合、ブラシのグラフィックスタイル、例えば円形スタイルCapを設定.ROUND、または四角いスタイルCap.SQUARE
setSrokeJoin(Paint.Join join); スムーズ効果など、ペイント時の各シェイプの結合方法を設定します.
setStrokeWidth(float width); ブラシスタイルがSTROKEまたはFILLの場合OR_STROKEの場合、ブラシの太さを設定します
setXfermode(Xfermode xfermode); マージ、交差、または並べ替えなど、グラフィックが重なる場合の処理方法を設定し、消しゴムの消去効果を作成するのによく使用されます.
2.テキスト描画設定setFakeBoldText(boolean fakeBoldText);太字文字をシミュレートすると、小さなフォントに設定すると効果が非常に悪くなります.
setSubpixelText(boolean subpixelText); これをtrueに設定すると、LCD画面でのテキストの表示に役立ちます.
setTextAlign(Paint.Align align); 描画テキストの位置合わせの設定
setTextScaleX(float scaleX); テキストx軸を描くスケールを設定すると、テキストのストレッチの効果が得られます.
setTextSize(float textSize); 描画テキストのサイズ設定
setTextSkewX(float skewX); 斜体文字を設定し、skewXを傾斜円弧にする
setTypeface(Typeface typeface); Typefaceオブジェクト、すなわち太字、斜体、およびライニング、非ライニングなどを含むフォントスタイルを設定します.
setUnderlineText(boolean underlineText); 下線付きテキスト効果の設定
setStrikeThruText(boolean strikeThruText); 削除線の効果を設定
キャンバスをクリア
//     
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPaint(paint);

文章:ポイント使用説明
三、Path moveToがブラシの位置を設定することについて
lineToは直線描画に使用します.
quadToは、円滑な曲線、すなわちベッセル曲線を描くために使用されます.mPath.quadTo(x 1,y 1,x 2,y 2)(x 1,y 1)は制御点、(x 2,y 2)は終了点である.
CubicToは同様にベッセル曲線を実現するために用いられる.mPath.CubicTo(x 1,y 1,x 2,y 2,x 3,y 3)(x 1,y 1)は制御点、(x 2,y 2)は制御点、(x 3,y 3)は終了点である.
CubicToとquadToは何が違いますか?コントロールポイントが1つ増えただけです.
arcToは、円弧(実際には円または楕円の一部を切り取る)を描くために使用されます.mPath.ArcTo(ovalRectF,startAngle,sweepAngle),ovalRectFは楕円の矩形,startAngleは開始角度,sweepAngleは終了角度である.
文章:Path関連方法説明(一)Path関連方法説明(二)
PathMeasureでは、一般的な方法を重点的に紹介します.
float getLength()は、現在のcontourの長さ、すなわち、このPathがどれくらい長いかを返します.
boolean getPosTan(float distance,float[]pos,float[]tan)は距離distance(0<=distance<=getLength())を入力し、現在の距離の座標点と接線を計算します.posは自動的に座標を埋め込むので、この方法は重要です.
boolean getSegment(float startD,float stopD,Path dst,boolean startWithMoveTo)は、開始距離と終了距離を入力し、その間のPathを返します.ここでdstです.彼はコンテンツを埋め込まれます.この方法は重要です.
boolean nextContour()は次の筆画に移動し、あなたのPathが複数の筆画で構成されている場合は、この方法を使用することができます.
void setPath(Path path,boolean forceClosed)という方法も重要であり、新しいPathオブジェクトを設定するために使用されるのは、最初の構造関数の補完である.
文章:Path特効のPathMeasure万能経路動を作り支付宝に倣って支払い成功と「天女散花」効果実現--PathMeasureの活躍を見る
==============================================================