我的项目中有许多等级的PNG图标列表(mdpi为32px,hdpi为48px,xhdpi为64px,xxhdpi为96px,由Android Studio自动创建),我得到一个Activity,我要显示这个图标有两种不同的尺寸,有些比其他尺寸大。
问题是较大的(我真正定义布局宽度和高度的那些)使用了drawable的低分辨率版本而不是更好的版本。
这是我的XML代码:
<!-- small icon -->
<ImageView
android:layout_weight="1"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_icon_like" />
<!-- ... -->
<!-- big icon -->
<ImageView
android:layout_weight="1"
android:src="@drawable/ic_icon_like"
android:layout_width="90dp"
android:layout_height="90dp" />
结果如下:
至于比较,这里是Drawable的PNG的xxhdpi版本,明显优于我得到的大版本。
我是Android的新手,所以我想我做错了什么,但我无法弄清楚是什么。我是否应该为每个分辨率定义更高分辨率我应该为两个显示的版本提供ic_icon_like
和ic_icon_like_big
吗?
答案 0 :(得分:1)
好吧,我终于继续使用了webfont,因为我得到了SVG格式的所有图标。
尺寸和颜色就像这样简单。
所以我在项目中添加了一个/app/assets/fonts/webfont.ttf
文件,从IconView
创建了一个TextView
heriting:
public class IconView extends TextView {
public IconView(Context context, AttributeSet attrs) {
super(context, attrs);
// here I trully use a cache, but remove it for a full example
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/webfont.ttf"));
// the following allows me to use a default color if no 'textColor' attribute is provided
int[] set = {android.R.attr.textColor};
TypedArray attributes = context.obtainStyledAttributes(attrs, set);
ColorDrawable color = (ColorDrawable) attributes.getDrawable(0);
attributes.recycle();
if (color == null) {
this.setTextColor(MY_DEFAULT_COLOR);
}
}
}
另外,我在我的webfont中为每个图标添加strings.xml
中的常量,如下:
<string name="icon_like"></string>
在我的XML活动和片段中使用了整个:
<com.mySociety.myProject.IconView android:text="@string/icon_like" />