中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Android動畫貝塞爾曲線怎么實現

小億
94
2024-04-23 16:44:55
欄目: 編程語言

在Android中,可以通過自定義動畫實現貝塞爾曲線動畫效果。下面是一個簡單的示例代碼,演示如何使用貝塞爾曲線實現一個簡單的動畫效果:

  1. 創建一個自定義的 View 類,繼承自 View 或者自定義的 View 類(例如自定義的 ShapeDrawable)。
public class BezierView extends View {
    private Paint mPaint;
    private Path mPath;
    private float mWidth;
    private float mHeight;

    public BezierView(Context context) {
        super(context);
        init();
    }

    public BezierView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public BezierView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(5);

        mPath = new Path();
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mWidth = w;
        mHeight = h;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mPath.reset();
        mPath.moveTo(0, mHeight / 2);
        mPath.cubicTo(mWidth / 4, -mHeight / 2, 3 * mWidth / 4, 3 * mHeight / 2, mWidth, mHeight / 2);
        canvas.drawPath(mPath, mPaint);
    }
}
  1. 在布局文件中引入自定義的 View,并設置動畫。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.example.bezieranimation.BezierView
        android:id="@+id/bezier_view"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

</RelativeLayout>
  1. 在 Activity 中設置動畫效果。
public class MainActivity extends AppCompatActivity {
    private BezierView mBezierView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mBezierView = findViewById(R.id.bezier_view);

        ObjectAnimator animator = ObjectAnimator.ofFloat(mBezierView, "translationY", 0, 200);
        animator.setDuration(2000);
        animator.setInterpolator(new AccelerateDecelerateInterpolator());
        animator.start();
    }
}

通過以上步驟,可以實現一個簡單的貝塞爾曲線動畫效果。可以根據實際需求調整貝塞爾曲線的控制點,以及動畫的路徑和時間等參數,實現更加豐富的動畫效果。

0
久治县| 冷水江市| 天气| 平南县| 浦北县| 黄山市| 闵行区| 门头沟区| 文化| 平舆县| 南安市| 屏东县| 越西县| 内乡县| 那曲县| 井冈山市| 布尔津县| 婺源县| 芒康县| 新乐市| 铜山县| 济源市| 修武县| 得荣县| 宜良县| 乡城县| 盈江县| 黄平县| 甘洛县| 四会市| 闽侯县| 防城港市| 临沭县| 保德县| 南投市| 舟曲县| 叙永县| 平阳县| 栾城县| 岱山县| 利川市|