91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
普定县| 大邑县| 吴忠市| 鹤庆县| 丰原市| 安顺市| 竹溪县| 霍林郭勒市| 昌宁县| 西乌珠穆沁旗| 石台县| 洛川县| 赤壁市| 隆德县| 武宁县| 保山市| 读书| 徐汇区| 凤凰县| 都江堰市| 金山区| 友谊县| 项城市| 南乐县| 水富县| 玉林市| 咸宁市| 清流县| 大同县| 清徐县| 延长县| 惠来县| 亳州市| 古田县| 武定县| 吉水县| 车险| 台山市| 大洼县| 合江县| 永嘉县|