この記事は、Android Piaoxin Animation(Live Likes)
の効果に関連する知識ポイントの編集についてです。私はアニメーション関連の部分にあまり精通していないはずなので、上記の最初の記事は要約と照合です。 。。
1.androidカスタムビューonMeasure()
onMeasure()、onLayout()、onDraw()の3つの関数は、カスタムビューの外観を構築するためにオーバーロードされていると言えます。onTouchEvent()などのオーバーロードされたビューの動作と組み合わせて、必要な知覚可能なカスタムビューを構築できます。
モードの説明:モードには3つのケースがあり、値はMeasureSpec.UNSPECIFIED、MeasureSpec.EXACTLY、MeasureSpec.AT_MOSTです。
MeasureSpec.EXACTLYは正確なサイズです。コントロールのlayout_widthまたはlayout_heightを、andorid:layout_width =” 50dip”やFILL_PARENTなどの特定の値として指定すると、コントロールのサイズが決定されます。正確なサイズです。
MeasureSpec.AT_MOSTは最大サイズです。コントロールのlayout_widthまたはlayout_heightがWRAP_CONTENTとして指定されている場合、コントロールのサイズは通常、コントロールのサブスペースまたはコンテンツによって変化します。このとき、コントロールのサイズは親コントロールで許可される最大サイズ。したがって、この時点でのモードはAT_MOSTであり、sizeは親コントロールで許可されている最大サイズを示します。
MeasureSpec.UNSPECIFIEDは不特定のサイズであり、多くの場合はありません。通常、親コントロールは、measureメソッドを介して渡されるAdapterViewです。
したがって、onMeasureメソッドを書き換える場合は、モードに応じてサイズを計算する必要があります。
次のコードは、より一般的な方法です。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getMeasuredLength(widthMeasureSpec, true), getMeasuredLength(heightMeasureSpec, false));
}
private int getMeasuredLength(int length, boolean isWidth) {
int specMode = MeasureSpec.getMode(length);
int specSize = MeasureSpec.getSize(length);
int size;
int padding = isWidth ? getPaddingLeft() + getPaddingRight()
: getPaddingTop() + getPaddingBottom();
if (specMode == MeasureSpec.EXACTLY) {
size = specSize;
} else {
size = isWidth ? padding + mWave.length / 4 : DEFAULT_HEIGHT
+ padding;
if (specMode == MeasureSpec.AT_MOST) {
size = Math.min(size, specSize);
}
}
return size;
}
関連リンクアドレス:http://blog.csdn.net/pi9nc/article/details/18764863
2.androidアニメーション補間器
2.1補間器のテキストによる説明:
http://blog.csdn.net/jason0539/article/details/16370405
補間器は、アニメーションの時間補間に使用されます。その役割は、浮動小数点値の0から1への変更を別の浮動小数点値の変更にマップすることです。
(1)AccelerateDecelerateInterpolatorはアニメーションの最初と最後でゆっくりと変化し、途中で
加速します(2)AccelerateInterpolatorはアニメーションの最初でゆっくりと変化し、その後加速し始めます
(3)AnticipateInterpolatorは前後にフリックします
(4)最初にAnticipateOvershootInterpolator、後方にフリックしてから特定の値を前方にフリックしてから最終値に戻る
(5)BounceInterpolatorがアニメーションの最後にバウンスする
(6)CycleInterpolatorアニメーションが特定の回数ループすると、レートが正弦曲線に沿って変化します
(7))DecelerateInterpolatorは高速で、アニメーションの開始時に低速
です(8)LinearInterpolatorは一定の速度で変化します
(9.)OvershootInterpolatorは特定の値を前方に反転し、元の位置に戻ります
2.2補間器のチャート説明:
http://www.cnblogs.com/mengdd/p/3346003.html
2.3補間器の簡単な使用(自分で書くのが最善です)
https://github.com/walfud/HelloInterpolator
2.4カスタム補間器(高度な使用法): http :
//www.cnblogs.com/wondertwo/p/5327586.html
3.androidアニメーションパスとpathMeasure
パスの基本的な説明:http:
//blog.csdn.net/cquwentao/article/details/51363475
高度なパスとpathMeasure:http://blog.csdn.net/cquwentao/article/details/51436852
PathMeasure
PathMeasureは主にパスを測定するために使用され、パスを介して、パス上の特定のポイントの座標などを取得できます。まず彼の基本的な方法を見てください。
(1)構築メソッド
public PathMeasure()
public PathMeasure(Path path、boolean forceClosed)
上記のように、2つのメソッドがあります。最初のメソッドは説明しません。2番目のメソッドには2つのパラメーターが
あります
。path:測定するパスforceClosed:パスを閉じるかどうか
(2)setPath
public void setPath(Path path、boolean forceClosed)
これは、測定するパスを指定します。これは、基本的に上記の2番目のコンストラクターと同様です。
(3)getLength
は、現在のパスの全長を返します。
(4)getMatrix
public boolean getMatrix(float distance、Matrix matrix、int flags)
このメソッドは、処理された行列を返すことを除いて上記と同様ですが、この行列は左上隅を回転点として使用するため、次のことを行う必要があります。この点が中心点に移動します。
martrixが必要とする情報を参照する追加のパラメーターフラグもあります。フラグの値には、次の2つの
PathMeasure.POSITION_MATRIX_FLAGがあります。位置情報
pathMeasure.TANGENT_MATRIX_FLAG:トリミング情報、方位角情報、パスに従って画像を回転させます。
4.スレッドセーフな累積クラスatomicinteger
アトミックインテグラークラスの役割:特に高い同時アクセスに適しています。
AtomicInteger、アトミック操作を提供する整数クラス。Java言語では、++ iおよびi ++操作はスレッドセーフではありません。これらを使用する場合、synchronizedキーワードが必然的に使用されます。AtomicIntegerは、スレッドセーフな加算および減算インターフェイスを使用します。
関連アドレス:http:
//www.cnblogs.com/Gordon-YangYiBao/archive/2012/08/07/2626422.html