4

Ice Cream Sandwich で見られるトグル スライドを再作成しようとしていますが、ICS より下の Android バージョンでは使用できません。私は自分のスライダーに慣れているところですが、現在 2 つの平行四辺形の画像 (1 つはオフ状態、もう 1 つはオン状態) を使用しています。理想的には、実行時にドローアブルを作成し、状態に基づいてその色を変更するだけです。これは、最終的にカスタマイズするのに本当に役立ちます。

私は一般的にドローアブルにまったく慣れていません。私たちのフレームワークではxmlを使用していないため、これをプログラムで作成したいと考えています。

これを作成する理由は、平行四辺形が 1 つのピースであり、スケーリングがはるかに管理しやすく、カスタマイズ可能になるためです。

さらに情報が必要な場合はお知らせください。

これはアンドロイドのトグルがどのように見えるかです。私は彼らの後に私のモデルを作りたいと思います: ICS トグル

他の詳細が必要な場合はお知らせください。意味のある方法で私が求めていることを説明したいと思います.

ありがとう!

4

1 に答える 1

5

だから私はこれに自分で答えることができました...パスを使用してドローアブルを作成し、それらをつなぎ合わせて平行四辺形を作成しました。

public Drawable createThumbDrawable(boolean checked){
    Path path = new Path();
    path.moveTo(0, 0);
    path.lineTo(1, 0);
    path.lineTo(1, 1);
    path.lineTo(0, 1);
    path.close();

    PathShape shape = new PathShape(path, 1, 1);
    ShapeDrawable drawable = new ShapeDrawable(shape);
    if (checked){
        drawable.getPaint().setColor(Color.CYAN);
    }
    else
    {
        drawable.getPaint().setColor(Color.BLACK);
    }
    mThumbLeftDrawable = createLeftThumbDrawable(checked);
    mThumbRightDrawable = createRightThumbDrawable(checked);
    return drawable;
}

public Drawable createLeftThumbDrawable(boolean checked){
    Path path = new Path();
    path.moveTo(0, 25);
    path.lineTo(25, 0);
    path.lineTo(25, 25);
    path.close();

    PathShape shape = new PathShape(path, 25, 25);
    ShapeDrawable drawable = new ShapeDrawable(shape);
    if (checked){
        drawable.getPaint().setColor(Color.CYAN);
    }
    else
    {
        drawable.getPaint().setColor(Color.BLACK);
    }
    return drawable;
}

public Drawable createRightThumbDrawable(boolean checked){
    Path path = new Path();
    path.moveTo(0,0);
    path.lineTo(25, 0);
    path.lineTo(0, 25);
    path.close();

    PathShape shape = new PathShape(path, 25, 25);
    ShapeDrawable drawable = new ShapeDrawable(shape);
    if (checked){
        drawable.getPaint().setColor(Color.CYAN);
    }
    else
    {
        drawable.getPaint().setColor(Color.BLACK);
    }
    return drawable;

}

public void setChecked(boolean checked) {
    //Log.d(TAG, "setChecked("+checked+")");
    boolean lc = checked;
    if (!mTextOnThumb) {
        lc = !checked;
    }

    if (checked){
        mThumbDrawable = createThumbDrawable(checked);//this.getContext().getResources().getDrawable(R.drawable.slide_off);
    }
    else {
        mThumbDrawable = createThumbDrawable(checked);//this.getContext().getResources().getDrawable(R.drawable.slide); 
    }

    super.setChecked(checked);
    mThumbPosition = lc ? getThumbScrollRange() : 0;
    invalidate();
}
于 2012-07-10T15:53:11.887 に答える