Android ScaledRelativeLayout使用onDraw方法的比例错误
我成功地创建了一个ViewPager,其中的项目具有不同的比例(当前项目的比例类似于1.0f,其他项目的比例类似于0.85f)。我使用此自定义布局:Android ScaledRelativeLayout使用onDraw方法的比例错误,android,canvas,android-custom-view,ondraw,Android,Canvas,Android Custom View,Ondraw,我成功地创建了一个ViewPager,其中的项目具有不同的比例(当前项目的比例类似于1.0f,其他项目的比例类似于0.85f)。我使用此自定义布局: import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.widget.RelativeLayout; public class ScaledRelativeLayout exte
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);
}
}
问题是它在我的Nexus7(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来扩展我的布局,我不知道。。。如果有人能解释为什么它使用的是框架布局而不是相对布局 也许你应该通过测量来决定你的布局的大小。
canvas.scale
在onDraw
的末尾让人感觉不到我尝试了这两种方法,但你是对的。