注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

android插件类库打包方法  

2013-03-13 10:01:12|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在插件包里面使用动态布局,资源保存在assets目录下,使用下面方法进行调用,然后打包成jar即可。


 将资源放到assets目录下.

        1.布局的话肯定是要动态布局了。也就是在程序中添加,而不是用布局文件(xml).

        2.图片的话,需要从assets中读取了。代码如下:

[java]
  1. //读取asset目录下图片文件为Drawable   
  2.   public static Drawable getDrawableFromAssets(Context context,  
  3.         String imageFileName) {  
  4.     Drawable result = null;  
  5.     AssetManager assetManager = context.getAssets();  
  6.     InputStream is = null;  
  7.     try {  
  8.         is = assetManager.open(imageFileName);  
  9.         result = Drawable.createFromStream(is, null);  
  10.         is.close();  
  11.         is = null;  
  12.     } catch (IOException e) {  
  13.         e.printStackTrace();  
  14.     }  
  15.     return result;  
  16. }  
 //读取asset目录下图片文件为Drawable
   public static Drawable getDrawableFromAssets(Context context,
	        String imageFileName) {
	    Drawable result = null;
	    AssetManager assetManager = context.getAssets();
	    InputStream is = null;
	    try {
	        is = assetManager.open(imageFileName);
	        result = Drawable.createFromStream(is, null);
	        is.close();
	        is = null;
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	    return result;
	}

   

       这样的话,打包类库工程时把assets目录下的所有内容包括上,就OK了。





补充(动态布局时需要注意的地方):


       比如编辑框在得到焦点和失去焦点时,状态效果的变化,按钮的点击效果等,这些我们一般使用selector来处理。

[java] 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <item android:color="#FF0000" android:state_focused="true" ></item>  
  4.     <item android:color="#00FF00" android:state_focused="false" ></item>      
  5. </selector>  
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:color="#FF0000" android:state_focused="true" ></item>
    <item android:color="#00FF00" android:state_focused="false" ></item>    
</selector>


        在动态布局时,这种情况需要使用 StateListDrawable 和ColorStateList。

        StateListDrawable类功能说明:该类定义了不同状态值下与之对应的图片资源,即我们可以利用该类保存多种状态值,多种图片资源。

[java]
  1. Drawable normal_back_bg = getDrawableFromAssets(this"bw_back_btn.png");  
  2. Drawable select_back_bg = getDrawableFromAssets(this"bw_back_btn_touch.png");  
  3.          
  4. StateListDrawable back_btn_bg = new StateListDrawable();  
  5. back_btn_bg.addState(new int[] { android.R.attr.state_active },  
  6.             normal_back_bg);  
  7.  back_btn_bg.addState(new int[] { android.R.attr.state_pressed,  
  8.            android.R.attr.state_enabled }, select_back_bg);  
  9.  back_btn_bg.addState(new int[] { android.R.attr.state_focused,  
  10.            android.R.attr.state_enabled }, normal_back_bg);  
  11.  back_btn_bg.addState(new int[] { android.R.attr.state_enabled },  
  12.             normal_back_bg);  
  13.          
  14. back_btn.setBackgroundDrawable(back_btn_bg);  
 Drawable normal_back_bg = getDrawableFromAssets(this, "bw_back_btn.png");
 Drawable select_back_bg = getDrawableFromAssets(this, "bw_back_btn_touch.png");
        
 StateListDrawable back_btn_bg = new StateListDrawable();
 back_btn_bg.addState(new int[] { android.R.attr.state_active },
        		normal_back_bg);
  back_btn_bg.addState(new int[] { android.R.attr.state_pressed,
            android.R.attr.state_enabled }, select_back_bg);
  back_btn_bg.addState(new int[] { android.R.attr.state_focused,
            android.R.attr.state_enabled }, normal_back_bg);
  back_btn_bg.addState(new int[] { android.R.attr.state_enabled },
        		normal_back_bg);
        
 back_btn.setBackgroundDrawable(back_btn_bg);

       

常用方法为:

        public void addState (int[] stateSet, Drawable drawable)

        功能: 给特定的状态集合设置drawable图片资源



TextView的一些细节知识:

         1.字体加粗

         在xml文件中使用android:textStyle=”bold” 可以将英文设置成粗体,或者直接在String文件中直接设置:

[java]
  1. <string name="styled_text">Plain, <b>bold</b>, <i>italic</i>, <b><i>bold-italic</i></b></string>   
<string name="styled_text">Plain, <b>bold</b>, <i>italic</i>, <b><i>bold-italic</i></b></string> 
         b代码加粗,i代表倾斜。但是不能将中文设置成粗体。


        将中文设置成粗体的方法是:

[java] 
  1. TextView tv = (TextView)findViewById(R.id.TextView01);   
  2. TextPaint tp = tv.getPaint();   
  3. tp.setFakeBoldText(true);   
TextView tv = (TextView)findViewById(R.id.TextView01); 
TextPaint tp = tv.getPaint(); 
tp.setFakeBoldText(true); 
      
       

        2.使用自定义字体

        我们可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。
        第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。
        第二步,程序中调用:

[java]
  1. TextView tv = (TextView)findViewById(R.id.textView);  
  2. AssetManager mgr=getAssets();//得到AssetManager   
  3. Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据路径得到Typeface   
  4. tv.setTypeface(tf);//设置字体    
TextView tv = (TextView)findViewById(R.id.textView);
AssetManager mgr=getAssets();//得到AssetManager
Typeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据路径得到Typeface
tv.setTypeface(tf);//设置字体  

        3.设置阴影

        在xml布局文件中使用一系列android:shadowXXX属性可添加设置阴影。具体为:shadowColor设置阴影颜色;shadowDx设置阴影水平偏移量;shadowDy设置阴影垂直偏移量;shadowRadius设置阴影半径。

     

[java] 
  1. android:shadowColor="#ffffff"  
  2. android:shadowDx="15.0"  
  3. android:shadowDy="5.0"  
  4. android:shadowRadius="2.5"  
android:shadowColor="#ffffff"
android:shadowDx="15.0"
android:shadowDy="5.0"
android:shadowRadius="2.5"
 

       4.插入图片

        使用xml布局文件中一系列android:drawableXXX属性来实现插入图片。具体为:drawableBottom是在文本框内文本的底端绘制指定图像;drawableLeft是在文本框内文本的左边绘制指定图像;drawableRight是在文本框内文本的右边绘制指定图像;drawableTop是在文本框内文本的顶端绘制指定图像;drawablePadding设置文本框内文本与图像之间的间距。

  评论这张
 
阅读(1047)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017