`
hemowolf
  • 浏览: 154116 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
   让TextView支持长按弹出系统自带的拷贝、粘贴功能,发现国内外的论坛提供的解决方法都不怎么理想。多数用editview来模仿,不过实现的效果实在不怎么好。   从android sdk 11起google添加了新api TextIsSelectable控制TextView是否支持拷贝、粘帖功能,不过这个功能在v11以下则不那么好彩了。   查阅TextView源码发现setTextIsSelectable实际调用的是Editor类的相应方法,而Editor里面控制了拷贝、粘帖功能。顺藤摸瓜通过反射获取到mEditor变量再调用setTextIsSelectable里调用的方法,调出拷贝 ...
android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。 可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。 不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。 即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改: 1,页面head添加      <meta name="viewport" content="width=de ...
  通常,使用try-finally来确保程序异常时能正常关闭游标。   Cursor cursor = null; try { cursor = getContentResolver().query(URI, .....); //dosomething } finally { if (cursor != null) { cursor.close(); } }  典型的一种写法,但并不能确保游标 ...
在上一文 给出了  textview多行设置ellipsize="end"并不显示省略号的解决方法(当然如果不是中文 android-textview-multiline-ellipse 也是个解决方案)。上一文中通过measureText计算出最后一行的文字是否超出了显示范围,由于文字的宽度不是均匀的,所以这个方法在某些时候就会出现多一两个字或少一两个字。下面给出第二中解决方法的主要代码:   protected void onDraw(Canvas canvas) { if (HAS_BUG && !mChecked) { mChec ...
     textview多行设置ellipsize="end"并不显示省略号。这是android4.0以下系统的bug,google发现有个家伙写了个开源控件http://android-textview-multiline-ellipse.googlecode.com/ 号称解决该问题。但实际测试还是存在问题,只好自己另寻找解决方案。下面的代码替换掉该控件的resetText函数,几乎可实现多行显示省略号 。 private void resetText() { String workingText = fullText; boolean ellips ...
从android4.0起系统设置的”显示“提供设置字体大小的选项。这个设置直接会影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非。下面是解决方案   Resources res = getResources(); Configuration config=new Configuration(); config.setToDefaults(); res.updateConfiguration(config,res.getDisplayMetrics() );   虽然google推荐使用sp作为字体的单位,但实际的开发过程中通常是根据UIUE的设计稿 ...
java嵌入lua有多种方案可选择,比如纯java的luaj 、纯C jni的 luajava还有个lua4j。在android中嵌入lua,我偏向使用luajava(当然面对除arm外的平台如x86、mips或需单独打包). 要使用luajava除了要下载luajava还要下载lua源码,需要注意的是luajava并不支持lua2.0以上的版本,我测试支持的版本是5.1.4,而且luajava中缺少头文件luajava.h(本文末提供该文件下载)。下载完后把lua和luajava的luajava.c和luajava.h解压到同一个文件夹,注意:把llex.c源文件的trydecpoint ...
   需要把ExpandableListView的适配器(继承自BaseExpandableListAdapter)同时绑定到AutoCompleteTextView,实现搜索过滤功能。实现了接口Filterable,以为成功在即,既然编译抛错误   The generic method setAdapter(T) of type AutoCompleteTextView is not applicable for the arguments (MyExpandableListAdapter). The inferred type MyExpandableListAdapter is not ...
    网易新闻这种滑动TAB效果,在android软件中还是比较常见的(是不是原创我不清楚,仅当学习研究之用~~~)。         比较常见的做法是:在FrameLayout里包装TAB bar,再在FrameLayout加一个虚拟的tab,切换tab时用虚拟tab在之前选中和当前选中的tab距离之间做一个移动动画。    用此种方法的十之八九,但在复杂的布局中FrameLayout不是你想加就能加滴,加了很容易崩溃滴^_^,此法的劣势大家明了吧?不明那就慢慢明吧。    今天我采用一种更加高效、灵活的方法来实现这种大家喜欢的花样--自画控件+Drawable动画。    大体原理 ...
android并不能直接显示gif。有不少人写解码器解析gif,当然最简单的是用webview来显示gif了。实际上android内置了gif解码器(不看apidemo的亏大了吧),采用native的方式,所以实现gif显示还是很简单的。 为了方便使用我稍作处理,把它做成一个view,使用就直接加到布局就可以了。具体详情请移步 android-gif-view
   在android的xml布局中,几百上千行的xml文件是常事。布局文件的增大一定程度上增加了视图编写的复杂度,而且如果视图的嵌套越深android在加载视图时的性能也会越差,甚至会出现一些低端设备内存不足而崩溃等奇异情况。    对性能要求比较高或适配终端机型广泛的应用,通过编写自定视图控件来优化应用是常用的方式。今天我实现一个类似appstore的更新应用个数提醒的实例,来探讨自画视图的应用场合。   或许很多人一看到上图就会想到用FrameLayout来实现,但一个复杂的视图想添加这种功能往往会非常复杂或有很多的顾虑,而且framelayout的过多使用又会陷入优化的陷阱。所以我用 ...
   首先来看看RadioButton的介绍  A radio button is a two-states button that can be either checked or unchecked. When the radio button is unchecked, the user can press or click it to check it. However, contrary to a CheckBox, a radio button cannot be unchecked by the user once checked.    即:RadioButton和Check ...
    Gallery中如果是要响应某一视图的点击事件只要设置setOnItemClickListener即可。通常的照片浏览不会有复杂的交互处理逻辑。但是如果gallery的视图不是简单的一张照片而是复杂的视图(Gallery的灵活应用将会为您带来很多的便利)。如需要模仿多屏切换的桌面效果(如android桌面的workspace效果),除了使用ViewFlipper或从android源码中提取workspace,gallery也是个相当好的替代方法。gallery原有的切换动画效果和其成熟稳定性,总比自己造轮子的风险小。 当Gallery内的视图是一个复杂的布局时,总避免不了屏 ...

whatsnew界面

 
   当下 一些比较流行的android软件在首次安装启动时会显示一连串的whatsnew界面。whatsnew除了告诉用户软件版本升级带来的新功能,同时也可以是软件使用的操作指引,使用户更快熟悉软件。下面是一些软件类似功能的软件的截 ...
   延续32位时代的逻辑通常只会在32位整数中取出高16位和低16位的短整数(short)或相反的合并操作,如c/c++语系中loword和hiword。现在64位的cpu普及到已是标配了,所以这种经典的算法也会在64位的long中也会有相应的应用。我在使用中则遇到了一些问题,记录下备忘。    需要取32位int的高低16位,或是合并2个int到64位中,即是通过cpu中最基本的"与"、"或"和位移算法来实现。如想要取64位的高32位,那么是通过"与"算法屏蔽掉低32位再把高32位移动到低32位,最后存储到32位的寄存器里。合并则 ...
Global site tag (gtag.js) - Google Analytics