我们来先看看android工程文件下的Assets和Res文件有什么区别?
相同点: 都可以用来存放资源,例如字体文件不会编译成二进制文件
不同点:1.asset文件内东西不会在R文件中生成相应的标记并通过AssetManager进行访问获取资源,res文件的资源会在R文件生成相应的标记,通过Id获取资源2.asset可以自己创建文件夹,而res有固定的那几个比如 res/xml res/anim res/raw 3.打包时,asset中的资源不管三七二十一都会打入程序中,而res文件会判断是否用到,没用到的不会打入包里
Asset文件中我们也可以存放一些json文件,从而读取他们(以流的形式)
<span style="font-size:18px;"> InputStream assetsStream = null;
StringBuffer dataBuffer = new StringBuffer();
try {
assetsStream = MainActivity.this.getAssets().open("my_json.json");
byte[] data = new byte[1024];
int bufferLength = 0;
while ((bufferLength = assetsStream.read(data)) > 0) {
dataBuffer.append(new String(data,0,bufferLength));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(assetsStream != null)
{
try {
assetsStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}</span>
读取asset文件下的字体文件
<span style="font-size:18px;"> typeface=Typeface.createFromAsset(getAssets(), "fonts/a_caslon_pro_regular.ttf");</span>
上面看见了吧 我们可以下在assets文件下创建fonts文件夹来存放字体文件
接下来我们来讲讲如何对TextView设置字体
1.可以通过html来实现
2.可以通过assets文件下的ttf字体文件来设置
3.综合利用上面的两种方法
4.设置style(这里 这个方法 就忽略了 基本大家都会)
那么我们来看看如何操作吧!!!
方法一:可以通过html来实现
1.通过Hbuilder来编写一段html代码 我们可以直接运行看到效果
2.通过Html.fromHtml()方法实现
代码如下:
<span style="font-size:18px;"> <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32sp" /></span>
<span style="font-size:18px;"> String s = " <p color=\"#000000\" style=\"background: #1B6D85;\"><big>H</big>ARD <big>W</big>ORK</p>";
tv=(TextView)findViewById(R.id.text);
tv.setText(Html.fromHtml(s));</span>
方法二:可以通过assets文件下的ttf字体文件来设置
1.我们在main文件下新建assets文件再在其文件下新建fonts文件然后把自己的ttf字体文件考入
2.用Typeface.createFromAsset()找到字体文件
3.对应控件设置字体
代码如下:
<span style="font-size:18px;"> <TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Work Hard"
android:textSize="32sp" /></span>
<span style="font-size:18px;"> tv1=(TextView)findViewById(R.id.text1);
typeface=Typeface.createFromAsset(getAssets(), "fonts/a_caslon_pro_regular.ttf");
tv1.setTypeface(typeface);</span>
方法三:综合利用
代码如下:
<span style="font-size:18px;"> <TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Work Hard"
android:textSize="32sp" /></span>
<span style="font-size:18px;"> tv2=(TextView)findViewById(R.id.text2);
tv2.setText(Html.fromHtml(s));
tv2.setTypeface(typeface);</span>
效果如下: