android自定义字体和程序启动时的加载页面

原创 2013年12月05日 13:39:46

先看效果图:



布局文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:background="@drawable/bg">
	
    <TextView 
        android:id="@+id/tv_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:textSize="60dp"
        android:text="@string/title"
        android:textScaleX="1.23"
        android:textColor="#333333"
        android:gravity="center_horizontal"
        />
    
	<wht.android.loading.LoadingView
		android:layout_gravity="center_horizontal" android:layout_height="wrap_content"
		android:id="@+id/main_imageview" android:src="@drawable/loader_frame_1"
		android:layout_marginTop="190dp" android:layout_width="wrap_content"
		></wht.android.loading.LoadingView>

	<TextView
	    android:id="@+id/tv_load"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="@string/loadStr"
		android:layout_marginTop="10dip"
		android:textColor="#666666"
		android:layout_gravity="center_horizontal"
		android:textSize="13sp"
	/>
</LinearLayout>

要点一:自定义字体

         在assets文件夹下新建一个fonts文件夹,然后将自己的字体文件(.ttf)拷贝到fonts文件夹中(这里是一些我收集的一些比较好的字体),然后再需要的地方使用一下代码即可。

        //自定义字体
        Typeface tf1 = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Thin.ttf");
        Typeface tf2 = Typeface.createFromAsset(getAssets(), "fonts/Roboto-BoldCondensed.ttf");
		loadView.setTypeface(tf1);
		titleView.setTypeface(tf2);

要点二:加载动画的实现

         在线程中每隔0.4秒执行postInvalidate()更新view,会自动调用onDraw(Canvas canvas)方法来设置imageView。

         以下用别人代码作为示例,我添加了一些注释。

public class LoadingView extends ImageView implements Runnable{	
	private boolean isStop = false;	//动画停止标志
	private int[] imageIds;
	private int index = 0;
	private int length = 1;
	
	public LoadingView(Context context)
	{
		this(context, null);
	}

	public LoadingView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}
	
	public void setImageIds(int[] imageId)
	{
		this.imageIds = imageId;
		if(imageIds != null && imageIds.length > 0)
		{
			length = imageIds.length;
		}
	}
	
	/**
	 * 当View离开当前窗口时调用。当按下返回键时可以正常调用该方法,但是当点击Home键退出时则无法正常调用。
	 */
		@Override
	protected void onDetachedFromWindow()
	{
		super.onDetachedFromWindow();
		isStop = true;
	}

	/**
	 * 在view刷新,绘制时调用,调用invalidate或者postInvalidate方法就会执行onDraw方法
	 */
	@Override
	protected void onDraw(Canvas canvas)
	{
		super.onDraw(canvas);
		if(imageIds != null && imageIds.length > 0)
		{
			this.setImageResource(imageIds[index]);
		}
	}

	@Override
	public void run()
	{
		while(!isStop)
		{
			index = ++index % length;
			postInvalidate();//更新View,调用onDraw方法
			try
			{
				Thread.sleep(400);
			}
			catch (InterruptedException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 启动动画
	 */
	public void startAnim()
	{
		new Thread(this).start();
	}
}

注:源代码打包下载,请点击这里


相关文章推荐

如何在NCL(The NCAR Command Language )启动时自动加载自定义的函数和程序

首先任意建立一个目录存放自定义的程序,例如: $ mkdir ~/MyNCL 然后建立一个环境变量: export NCL_DEF_SCRIPTS_DIR="~/MyNCL" 然后在MyNCL...

自定义dialog(仿照APP启动时的dialog广告页面)

*看朋友的博客的,觉得还不错,就学学,自定义弹窗用的是自定义dialog,没有用dialogFragment http://blog.csdn.net/qq_34471736/article/det...

Android Webview使用自定义字体加载网页

前言有时,当我们使用Webview加载一个网页的时候,需要使用特定的字体来显示,这时就需要我们对页面做下处理!方法①首先需要我们获得目标网页的HTML源码:URL url = new URL(addr...

[ZT]关于CAD启动时自动加载程序的研究(转)

CAD文件加载顺序:uacad2006.lsp (AutoCAD使用)uacad.rx (用户自定义的*.arx文件加载清单)注:在CAD2006中,由错误提示怀疑:*.arx文件检测先于acad20...

在SpringMVC中实现程序启动时加载数据库中内容

因为需要在程序启动时加载相关系统参数,所以百度了很多,现在做个记录。 一、使用servlet(失败) 1、继承HttpServlet类,并在构造方法中处理 public class ViewSe...

Sencha Touch延迟加载模块提高程序启动时性能

目前一段时间一直做移动终端开发,使用框架为Sencha Touch,Sencha Touch是基于Html5和Ext的,所以在性能上存在很大的问题,尤其是打开程序的时候需要加载很多模块的javascr...

如何在tomcat/jetty启动时自动加载一个类 以便初始化程序

1) 增加一个监听程序 MyServletContextListener.java, 实现javax.servlet.ServletContextListener接口 package test.sta...
  • kkgbn
  • kkgbn
  • 2016年01月27日 16:09
  • 1294

在BBB启动时自动加载dtbo(或执行脚本、运行程序)

启动时自动加载dtbo,实际上就是做了一个cape。官方推荐的方法是用eeprom来实现,请参考我的博文《为BBB制作专属自己的cape(一)》和《为BBB制作专属自己的cape(四)》中有关eepr...

让AutoCAD启动时自动加载应用程序

方法一: 1. 在AutoCAD安装目录找到c:\Program Files\AutoCAD 2006\Support\acad2006.lsp 用记事本打开,在最后加入(下段代码第二行即可,注意...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android自定义字体和程序启动时的加载页面
举报原因:
原因补充:

(最多只允许输入30个字)