假设您设计的是普通屏幕(4英寸)的hdpi密度,但是当您在大屏幕(7英寸)的hdpi密度上看到它时,图标太小。 最初我做的是创建一个文件夹drawable-large-hdpi,然后从xhdpi获取图标并将其复制到那里。 它似乎运行良好,但是当我遇到一个大的xhdpi屏幕时,它导致了问题,因为Android在查看drawable-xhdpi文件夹之前首先查看drawable-large-hdpi,因为large具有优先权。创建另一个文件夹drawable-large-xhdpi并复制文件似乎效率低下,因为您必须为不断扩展的dpi屏幕执行此操作。
因此,如果您要设置特定的宽度/高度,而不是在应用内的图标上设置“wrap_content”, layout_width / height = @ dimen / icon_size,然后在dimensions.xml中设置值和值 - 大文件夹中的不同宽度?
如果可以将其设置为父视图的百分比,那将是很好的,但布局权重仅适用于线性布局的某些场景
是否有更好的方法。
答案 0 :(得分:0)
public class ScreenPercentImageView extends ImageView {
private float mWidthPercent = 100;
private double mDrawableScalePercent;
public ScreenPercentImageView(Context context) {
super(context);
}
public ScreenPercentImageView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
setup(context, attrs);
}
public ScreenPercentImageView(Context context, AttributeSet attrs) {
super(context, attrs);
setup(context, attrs);
}
private void setup(Context context, AttributeSet attrs) {
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.ScreenPercentImageView, 0, 0);
try {
mWidthPercent = a.getFloat(
R.styleable.ScreenPercentImageView_widthPercentIV, 50);
} finally {
a.recycle();
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentWidth = getResources().getDisplayMetrics().widthPixels;
int parentHeight = getResources().getDisplayMetrics().heightPixels;
int width;
if (parentHeight > parentWidth)
width = (int) (parentWidth * mWidthPercent / 100);
else
width = (int) (parentHeight * mWidthPercent / 100);
mDrawableScalePercent = (double) width / parentWidth;
int height = getDrawable().getIntrinsicHeight() * width
/ getDrawable().getIntrinsicWidth();
setMeasuredDimension(width, height);
}
public double getDrawableScalePercent() {
return mDrawableScalePercent;
}
}
这是一个可以用作示例的ImageView。我创建它所以它可以使用宽度作为屏幕大小的百分比。它会适当地缩放高度。您可以使用此概念使其使用父级的宽度而不是屏幕大小。
答案 1 :(得分:0)
您在大屏幕上使用的布局,不应该只是小屏幕的“伸展”/放大版本。根据屏幕上有多少可用空间,Android非常适合加载和创建不同的布局。
片段被引入到Android中,因此您可以做各种各样的事情,以便充分利用不同的屏幕尺寸。
使用最小宽度可用桶(layout-swXdp,其中X是您喜欢的dp的数量),并在屏幕内部有足够空间时创建独特的布局,平板电脑用户会爱你