gpt4 book ai didi

android - 以编程方式在 Android 中创建平行四边形 Drawable

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:48 25 4
gpt4 key购买 nike

我正在尝试重新创建在 Ice Cream Sandwich 中看到的切换幻灯片,但不适用于 ICS 以下的 Android 版本。我现在对我的 slider 感到满意,但是我目前正在使用两个平行四边形图像(一个用于关闭状态,一个用于打开状态)。我想理想地在运行时创建可绘制对象,并根据状态简单地更改它的颜色。这最终确实有助于定制。

一般来说,我对 drawable 很陌生,并且想以编程方式创建这个,因为在我们的框架中我们不使用 xml。

创建这个的原因是平行四边形是一个整体,使缩放更易于管理和自定义。

非常感谢任何帮助,如果您需要更多信息,请告诉我!

这就是 androids toggle 的样子,我想模仿他们的模型: ICS Toggle

如果您需要任何其他详细信息,请告诉我,我希望我能以有意义的方式解释我所追求的。

谢谢!

最佳答案

所以我能够自己回答这个问题......我使用路径来创建可绘制对象,然后将它们缝合在一起以创建平行四边形。

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();
}

关于android - 以编程方式在 Android 中创建平行四边形 Drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com