当前位置:  编程技术>移动开发
本页文章导读:
    ▪Unity3D开发(4):NGUI纹理九宫格拉伸        Unity3D开发(四):NGUI纹理九宫格拉伸不论是游戏中的UI,还是应用中的UI,纹理九宫格拉伸都是必不可少的,因为采用这种拉伸方式,可以最大化的节省纹理资源,还能保证良好的表现效果.........
    ▪ 怎么在onCreate中获取TextView的宽度        如何在onCreate中获取TextView的宽度在onCreate()里是获取不到控件的width,height的,这个时候控件都没有measure,layout完毕,所以获取到的结果都是0。要获取控件的宽度、高度必须在measure、layout过程.........
    ▪ 当地schemeApp扩展       本地schemeApp扩展 schemeApp.json这个数据库里面只有scheme和appid,官方demo是使用appid到iTunes上查询完整信息,比如名字、图片等。 我写了点代码,到iTunes上抓了一些中文名字。 schemeApp2.json有一些.........

[1]Unity3D开发(4):NGUI纹理九宫格拉伸
    来源: 互联网  发布时间: 2014-02-18
Unity3D开发(四):NGUI纹理九宫格拉伸

不论是游戏中的UI,还是应用中的UI,纹理九宫格拉伸都是必不可少的,因为采用这种拉伸方式,可以最大化的节省纹理资源,还能保证良好的表现效果!


1.原理


把纹理用4条线分割成9部分(如上图),通过观察可以发现,5是最规则的形状(矩形),其次是2,6,8,4(矩形,但是和四个角有公共边),最后是四个角1,3,9,7(圆角矩形)

规则的图形在拉伸之后的效果是比较好的,如果是不规则的图形,则会在拉伸之后变形!

根据上图做拉伸制定规则:

(1)保证四个角1,3,9,7不做任何拉伸
(2)与四个角有公共边的四个矩形2,6,8,4做单向拉伸,即保证与四个角的公共边不拉伸,例如2,8只进行横向拉伸,4,6只进行纵向拉伸
(3)中间部分5做双向拉伸,即横向,纵向同事拉伸

2.NGUI中Sliced用法

(1)选中制作完成的Atlas文件,在其Inspector面板中设置四条切线的位置(像素为单位)



(2)使用Sliced类型的UISprite




3.实现原理

在UISprite中,对于不同类型有不同填充Shader定点的方法,参照UISprite.OnFill()

public override void OnFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols)
	{
		switch (type)
		{
			case Type.Simple:
			SimpleFill(verts, uvs, cols);
			break;

			case Type.Sliced:
			SlicedFill(verts, uvs, cols);
			break;

			case Type.Filled:
			FilledFill(verts, uvs, cols);
			break;

			case Type.Tiled:
			TiledFill(verts, uvs, cols);
			break;
		}
	}
基本的Sprite是一个矩形纹理,即两个三角形,4个顶点,参照

protected void SimpleFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols)

九宫格拉伸的Sprite相当于9个矩形纹理拼合而成,并且有部分矩形做拉伸操作,根据Shader渲染三角形,需要传4x9=36个顶点,参照

protected void SlicedFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols)



    
[2] 怎么在onCreate中获取TextView的宽度
    来源: 互联网  发布时间: 2014-02-18
如何在onCreate中获取TextView的宽度
在onCreate()里是获取不到控件的width,height的,这个时候控件都没有measure,layout完毕,所以获取到的结果都是0。要获取控件的宽度、高度必须在measure、layout过程完毕之后。
有2种方法:
1.如lss所讲的一样:
ViewTreeObserver vto = mBtnSend.getViewTreeObserver();
    
  vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
  int height = mBtnSend.getMeasuredHeight();
  int width = mBtnSend.getMeasuredWidth();
  System.out.println("height:" + height + "  " + "width:" + width);
  }  
  });

2.在Activity里重写方法
  public void onWindowFocusChanged(boolean hasFocus);

  在窗口第一次获得焦点的时候,肯定能获取到控件的width,height。



3.

textView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
 
            public boolean onPreDraw() {
        //这里textView已经初始化完毕,你可以得到所有属性
            return true;
    }
});


    
[3] 当地schemeApp扩展
    来源: 互联网  发布时间: 2014-02-18
本地schemeApp扩展

作者:ani_di
版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di

本地schemeApp扩展

iHasApp这个用过的话,大概知道我说的是什么了。

schemeApp.json这个数据库里面只有scheme和appid,官方demo是使用appid到iTunes上查询完整信息,比如名字、图片等。 我写了点代码,到iTunes上抓了一些中文名字。

抓取的功能不难实现,问题是苹果发现大量请求时会做一些屏蔽,因此到后面成功率就不太高。断断续续一天时间,抓取到90%(貌似有些id过期or有问题)。每个人重复获取没意思,我就共享出来,免得大家做重复劳动。

https://github.com/annidy/schemeApp2

schemeApp2.json有一些我自己添加的中文应用,并不存在于原来里面,谁让人家主要针对外国用户呢。

PS: 此数据库目前并不完整,主要我这边时不时的被屏蔽。欢迎大家多跑几次抓包过程,就几分钟而已,把它更完善。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3