ScaledRelativeLayout 错误比例与 onDraw 方法
ScaledRelativeLayout wrong scale with the onDraw method
我成功创建了一个 ViewPager,其中包含不同比例的项目(currentItem 的比例为 1.0f,其他的为 0.85f)。我使用这个自定义布局:
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.RelativeLayout;
public class ScaledRelativeLayout extends RelativeLayout {
private float scale = MainActivity.BIG_SCALE;
public ScaledRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScaledRelativeLayout(Context context) {
super(context);
}
public void setScaleBoth(float scale) {
this.scale = scale;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
}
}
问题是它可以在我的 Nexus 7 (2012) 上运行,但在我的智能手机上不行,我不明白为什么......我在想也许我在搜索后在 onDraw 方法中做了一个糟糕的比例,我试试这个:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
canvas.restore();
}
没有任何效果,知道吗?
我通过扩展 FrameLayout 而不是 RelativeLayout 成功地扩展了我的布局,我不知道...如果有人能解释为什么它使用 FrameLayout 而不是 RelativeLayout...
我成功创建了一个 ViewPager,其中包含不同比例的项目(currentItem 的比例为 1.0f,其他的为 0.85f)。我使用这个自定义布局:
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.RelativeLayout;
public class ScaledRelativeLayout extends RelativeLayout {
private float scale = MainActivity.BIG_SCALE;
public ScaledRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScaledRelativeLayout(Context context) {
super(context);
}
public void setScaleBoth(float scale) {
this.scale = scale;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
}
}
问题是它可以在我的 Nexus 7 (2012) 上运行,但在我的智能手机上不行,我不明白为什么......我在想也许我在搜索后在 onDraw 方法中做了一个糟糕的比例,我试试这个:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
canvas.restore();
}
没有任何效果,知道吗?
我通过扩展 FrameLayout 而不是 RelativeLayout 成功地扩展了我的布局,我不知道...如果有人能解释为什么它使用 FrameLayout 而不是 RelativeLayout...