android中字体图标的正确使用
YolandaStri
8年前
<h3><strong>iconfont对于客户端应用来说有很多便捷:</strong></h3> <p>1、自由变化大小</p> <p>2、自由修改颜色</p> <p>3、可以添加一些视觉效果如:阴影、旋转、透明度。</p> <p>4、比单位的图片更节省资源</p> <h3><strong>正常的添加方案</strong></h3> <p>第一步:复制字体文件到项目 assets 目录;</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/8bf27024ebd35da081b671d3512da2cb.png"></p> <p>第二步:打开 iconfont 目录中的 demo.html,找到图标相对应的 HTML 实体字符码;</p> <p>第三步:打开 res/values/strings.xml,添加 string 值;</p> <pre> <code class="language-java"><string name="icons"> 手机</string></code></pre> <p>第四步:打开 activity_main.xml,添加 string 值到 TextView:</p> <pre> <code class="language-java"><TextView android:id="@+id/like" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/icons" /></code></pre> <p>第五步:为 TextView 指定文字:</p> <pre> <code class="language-java">import android.graphics.Typeface; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Typeface iconfont = Typeface.createFromAsset(getAssets(), "iconfont/iconfont.ttf"); TextView textview = (TextView)findViewById(R.id.like); textview.setTypeface(iconfont); }</code></pre> <p>设置完效果如下</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/5b72e08c67bc89796587720aec97927e.jpg"></p> <p>就是这么简单完事。但是我们发现在activity代码中setTypeface很没有必要。因为我们整个应用有很多页面都需要设置字体图标时,这样设置会有很多垃圾代码产生。这时我们可以用一个简单的自定义view就解决问题</p> <pre> <code class="language-java">public class IconFontTextview extends TextView { public IconFontTextview(Context context) { super(context); init(context); } public IconFontTextview(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public IconFontTextview(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private void init(Context context){ Typeface iconfont = Typeface.createFromAsset(context.getAssets(), "iconfont/iconfont.ttf"); setTypeface(iconfont); } }</code></pre> <p>然后就是改一下我们布局文件</p> <pre> <code class="language-java"><com.xiaoming.liaoliao.view.IconFontTextview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="@android:color/holo_red_dark" android:text=" 手机" /></code></pre> <h3><strong>其他textview的属性还是正常使用,解决</strong></h3> <p> </p> <p> </p>