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>