当前位置:  编程技术>移动开发
本页文章导读:
    ▪pvr与png的内存储器占用        pvr与png的内存占用 Zwoptex生成的spritesheet除了可以导出png格式的图片外还有pvr格式。pvr格式是iOS的显示芯片可以直接读取的,不需要经过解析就能直接显示,所以渲染速度更快,更节省内存。.........
    ▪ 配备应用获得系统权限        配置应用获得系统权限 android\system\core\include\private\android_filesystem_config.hRuntime.getRuntime().exec("chmod 777 "+abspath).waitFor();exec = Runtime.getRuntime().exec("su -c "+abspath); ......
    ▪ TextView的日常应用技巧       TextView的日常使用技巧     Textview在日常开发工作中使用非常频繁,在这里简单总结一下其比较重要的用法。目标是设置textview的中一段文字的显示属性,例如指定文字要下划线显示(@XXX、.........

[1]pvr与png的内存储器占用
    来源: 互联网  发布时间: 2014-02-18
pvr与png的内存占用

Zwoptex生成的spritesheet除了可以导出png格式的图片外还有pvr格式。pvr格式是iOS的显示芯片可以直接读取的,不需要经过解析就能直接显示,所以渲染速度更快,更节省内存。
我特意在cocos2D 2.0 rc1版本做了一项测试:
    一个空的cocos2D模版工程运行起来之后占用的内存大约是4MB。
    直接用CCSprite显示一张2048*1024的数据格式为RGBA565的PNG图片之后,内存占用达到了20MB。
    同样的情况下换成pvr格式之后,内存占用为16MB。也就是说png格式的图片占用了20-4=16MB,pvr格式的图片占用了16-4=12MB。节省了25%。

    Zwoptex还有一个选项叫做“ccz压缩”,选中之后图像的大小几乎可以减小一半。这样的文件格式成了:xxx.pvr.ccz,cocos2d是可以识别的。

    PVRTC2和PVRTC4是两种pvr压缩的图像格式,他们都是pvr文件。这两种图像格式比普通图像有更快的加载速度和更小的内存占用。
PVRTC4: Compressed format, 4 bits per pixel, ok image quality
PVRTC2: Compressed format, 2 bits per pixel, poor image quality
一般pvr格式文件的图像格式有:
RGBA8888: 32-bit texture with alpha channel, best image quality
RGBA4444: 16-bit texture with alpha channel, good image quality
RGB565: 16-bit texture without alpha channel, good image quality but no alpha (transparency)
图像占用内存的公式是:numBytes = width * height * bitsPerPixel / 8
也就是说2048*2048的RGBA8888占用内存16MB,而PVRTC4只占用2MB

源地址

 


    
[2] 配备应用获得系统权限
    来源: 互联网  发布时间: 2014-02-18
配置应用获得系统权限
android\system\core\include\private\android_filesystem_config.h
Runtime.getRuntime().exec("chmod 777 "+abspath).waitFor();
exec = Runtime.getRuntime().exec("su -c "+abspath);

    
[3] TextView的日常应用技巧
    来源: 互联网  发布时间: 2014-02-18
TextView的日常使用技巧

    Textview在日常开发工作中使用非常频繁,在这里简单总结一下其比较重要的用法。目标是设置textview的中一段文字的显示属性,例如指定文字要下划线显示(@XXX、#XXX#),文字替换成图片,文字加重、变色、变大等。

实现的基本思路都是将指定的文字找出来,然后用实现Spananble接口的子类覆盖,即可。
    Spananble只是一个接口,它的继承关系是:Spananble->Spanned->CharSequence 
     因为Spannable继承于CharSequence接口,因而,TextView可以直接setText,Spannable的实现类:Editable, SpannableString, SpannableStringBuilder 。
    Spannable中有提供public abstract void setSpan (Object what, int start, int end, int flags) 方法,来设置被替换部分要显示的样式
    其中参数Object what 又必须是 android.text.style.CharacterStyle 的实现子类,就是它决定显示的样式,例如实现下划线的UrlSpan,实现改变字体颜色的ForegroundColorSpan,实现改变字体大小的AbsoluteSizeSpan,实现替换成图片的ImageSpan等。下面我会总结几种常用的用法: 

 

    1、改变文字的大小以及颜色:
String str = "This is testing text!"
int start =str.indexOf("testing");
int end = start + "testing ".length();
SpannableStringBuilder style = new SpannableStringBuilder(str);
int size = 20;  //20px
style.setSpan(new AbsoluteSizeSpan(size), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
int color = 0xff0000; //设置指定位置文字的颜色 
style.setSpan(new ForegroundColorSpan(color), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);      
...

textView.setText(style);
    2、实现多字符串的动态处理:
string.xml:
<string name="testing">这是一个数字:%1$d, 这是两位数字:%2$d,这又是成都为3的字符串:%3$s</string>
String text = String.format(getResources().getString(R.string.testing), 1, 22, "三个字");

 int index[] = new int[3];  
 index[0] = text.indexOf("1");  
 index[1] = text.indexOf("22");  
 index[2] = text.indexOf("三个字");  
  
 SpannableStringBuilder style=new SpannableStringBuilder(text);     
 style.setSpan(new ForegroundColorSpan(Color.RED),index[0],index[0]+1,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);      
 style.setSpan(new ForegroundColorSpan(Color.RED),index[1],index[1]+2,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);      
 style.setSpan(new BackgroundColorSpan(Color.RED),index[2],index[2]+3,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);      
 textView.setText(style);
    在项目开发中,我们经常需要把多个字符串进行拼接,用上面的方式处理,并结合起来使用,可以避免很多Textview的拼接!

 

    3、实现超链接效果:
    第一种简单做法:当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,也可以是所有的类型都都响应:android:autoLink="all",最后在java代码里,对指定的textView.setAutoLinkMask(Linkify.ALL); 
    第二种自定义做法:尽管第一种做法简单,但都是默认调用,不能自定义跳转,像微博的@XXX ,#XXX#这类的特殊文字的响应,需要指定处理的视图。我们一般可以这样子实现:
    (1)我们先指定特定字符串响应点击:
SpannableStringBuilder style = new SpannableStringBuilder("call: 110");  
style.setSpan(new StyleSpan(Typeface.BOLD), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
style.setSpan(new URLSpan("110"), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
textView.setText(style);  
textView.setMovementMethod(LinkMovementMethod.getInstance());
    (2)更改响应点击的方式:
     URLSpan是我们常用的文字超链接控件,但是默认都会自带下划线,并不是太美观。有官方API文档可知,URLSpan继承自 ClickableSpan  , 因而我们可以通过继承 ClickableSpan   并重写其实现的方法,即可实现自定义跳转控制,以及外观样式的控件了。
public class URLSpanNoUnderline extends ClickableSpan {
    private final String mURL;
    public URLSpanNoUnderline(String url) {
        mURL = url;
    }

    public String getURL() {
        return mURL;
    }

    @Override
    public void onClick(View widget) {
        Uri uri = (Uri) widget.getTag();
        if(uri!=null) {
            final Context context = widget.getContext();
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
            context.startActivity(intent);
        }
    }
    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setUnderlineText(false);  //取消下划线
        ds.setColor(0xff0066ff);     //指定文字颜色
        //ds.setTextSize(ds.getTextSize()*1.1F);
    }
}
    (3)实现响应:
     我们通过设置Intent的Action---- Intent.ACTION_VIEW,并指定携带的Data是uri,那么我们就可以在程序中,实现响应该Action和Data意图的Activity:
      <activity
            android:name=".activity.XXXActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="_host"
                    android:scheme="_scheme" />
            </intent-filter>
        </activity>
    (4)最后是自定义Uri
     uri一般由scheme和host,就像http的url一样,http://www.google.com,其scheme是http,host就是www.google.com,二者结合就可定位到某一位置。uri也一样,当然带参数也是可以的,例如:my_scheme://my_host?param=www.google.com。
     总结一下,通过重写实现 ClickableSpan  接口,并自定义Uri,即可使其 响应 导向指定的activity进行。
     未完待续...

    本文由zhiweiofli编辑发布,转载请注明出处,谢谢。

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android发送短信功能代码 iis7站长之家
▪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