Android有趣的全透明效果–Activity及Dialog的全透明(附android系统自带图标大全)

1.Activity全透明 同学zzm给了这个有趣的代码,现在公布出来。 先在res/values下建colors.xml文件,写入:** **** ** [?](http://www.oschina.net/question/54100_30266#) <table style="font-weight: normal !important;" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="gutter" style="color: #afafaf !important;"> <div class="line number1 index0 alt2"> 1 </div> <div class="line number2 index1 alt1"> 2 </div> <div class="line number3 index2 alt2"> 3 </div> <div class="line number4 index3 alt1"> 4 </div> </td> <td class="code"> <div class="container"> <div class="line number1 index0 alt2"> `&lt;? ``xml` `version` `= ``"1.0"` `encoding` `= ``"UTF-8"` `?&gt; ` </div> <div class="line number2 index1 alt1"> `&lt;``resources``&gt; ` </div> <div class="line number3 index2 alt2"> ` ``&lt;``color` `name` `= ``"transparent"``&gt; #9000 &lt;/``color``&gt; ` </div> <div class="line number4 index3 alt1"> `&lt;/``resources``&gt;` </div> </div> </td> </tr> </table> ...

2014年11月19日 · 9 分钟 · 天边的星星

Mac 下面配置XMAPP集成开发环境 Alias别名方法

XMAPP Alias别名配置在windows上简单很,网上很多方法都可以实现,但是在 mac上面 一直都是403没有权限,这个问题困扰了1天,最后在同事(linux大神)的帮助下,终于解决了这个蛋疼的问题,让用Mac的小白们,也能方便的使用Mac开发PHP程序。废话不多说直接上步骤 XAMPP官方下载地址:https://www.apachefriends.org/zh_cn/index.html 操作步骤 1.安装好Mac最新的XAMPP。 2.配置etc/extra/httpd-xampp.conf 修改成 把下面的local修改成 all granted <LocationMatch “^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))”> #Require local Require all granted ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var 3.配置etc/httpd.conf 添加下面别名 由于tmp文件所有用户有权限范围,直接配置下面就可以访问tmp目录,但是其他的目录还是会受到权限问题。 Alias /abcd/ “/tmp/aaa/” <Directory “/tmp/aaa/”> Options Indexes MultiViews Require all granted Alias /php “/Users/jason/Documents/php_workspace” <Directory “/Users/jason/Documents/php_workspace”> Options Indexes MultiViews Require all granted 4.修改Apache的启动用户 通过命令 id jason找到jason的所在组,修改成下面对应的内容。 也可以把/Users/jason/Documents/php_workspace这个目录赋值给默认用户访问权限(没有亲测)。 # # If you wish httpd to run as a different user or group, you must run ...

2014年11月19日 · 1 分钟 · 天边的星星

GridView+Viewpage实现一切上下滑动

一个布局。。上面是一个自动播放的ViewPager,,下面是一个GridView。。 怎么实现ViewPager和GridView一起上下滑动,,而不是向上滑动时,,ViewPager会覆盖GridView。 重写gridview 和 ScrollView public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE » 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } } —————————————————————————————————– public class MyScrollView extends ScrollView { // 滑动距离及坐标 private float xDistance, yDistance, xLast, yLast; public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } ...

2014年11月18日 · 1 分钟 · 天边的星星

Android开发实践:自定义带消息循环(Looper)的工作线程

Android也提供了封装有消息循环(Looper)的HandlerThread类,这种线程,可以绑定Handler()对象,并通过 Handler的sendMessage()函数向线程发送消息,通过handleMessage()函数,处理线程接收到的消息。这么说比较抽象,那 么,本文就利用基础的Java类库,实现一个带消息循环(Looper)的线程,以帮助初学者理解这样一个Looper到底是怎么工作的。 1. 首先,我们完成一个简单的线程框架。 1 <div class="line number2 index1 alt1"> 2 </div> <div class="line number3 index2 alt2"> 3 </div> <div class="line number4 index3 alt1"> 4 </div> <div class="line number5 index4 alt2"> 5 </div> <div class="line number6 index5 alt1"> 6 </div> <div class="line number7 index6 alt2"> 7 </div> <div class="line number8 index7 alt1"> 8 </div> <div class="line number9 index8 alt2"> 9 </div> <div class="line number10 index9 alt1"> 10 </div> <div class="line number11 index10 alt2"> 11 </div> <div class="line number12 index11 alt1"> 12 </div> <div class="line number13 index12 alt2"> 13 </div> <div class="line number14 index13 alt1"> 14 </div> <div class="line number15 index14 alt2"> 15 </div> <div class="line number16 index15 alt1"> 16 </div> <div class="line number17 index16 alt2"> 17 </div> <div class="line number18 index17 alt1"> 18 </div> <div class="line number19 index18 alt2"> 19 </div> <div class="line number20 index19 alt1"> 20 </div> <div class="line number21 index20 alt2"> 21 </div> <div class="line number22 index21 alt1"> 22 </div> <div class="line number23 index22 alt2"> 23 </div> <div class="line number24 index23 alt1"> 24 </div> <div class="line number25 index24 alt2"> 25 </div> <div class="line number26 index25 alt1"> 26 </div> <div class="line number27 index26 alt2"> 27 </div> <div class="line number28 index27 alt1"> 28 </div> <div class="line number29 index28 alt2"> 29 </div> <div class="line number30 index29 alt1"> 30 </div> <div class="line number31 index30 alt2"> 31 </div> <div class="line number32 index31 alt1"> 32 </div> <div class="line number33 index32 alt2"> 33 </div> </td> <td class="code"> <div class="container"> <div class="line number1 index0 alt2"> `public` `class` `LooperThread {` </div> <div class="line number2 index1 alt1"> ` ` </div> <div class="line number3 index2 alt2"> ` ``private` `volatile` `boolean` `mIsLooperQuit = ``false``;` </div> <div class="line number4 index3 alt1"> ` ` </div> <div class="line number5 index4 alt2"> ` ``private` `Thread mThread; ` </div> <div class="line number6 index5 alt1"> ` ` </div> <div class="line number7 index6 alt2"> ` ``public` `void` `start() { ` </div> <div class="line number8 index7 alt1"> ` ``if``( mThread != ``null` `) {` </div> <div class="line number9 index8 alt2"> ` ``return``;` </div> <div class="line number10 index9 alt1"> ` ``} ` </div> <div class="line number11 index10 alt2"> ` ``mIsLooperQuit = ``false``;` </div> <div class="line number12 index11 alt1"> ` ``mThread = ``new` `Thread(mLooperRunnable);` </div> <div class="line number13 index12 alt2"> ` ``mThread.start(); ` </div> <div class="line number14 index13 alt1"> ` ``}` </div> <div class="line number15 index14 alt2"> ` ` </div> <div class="line number16 index15 alt1"> ` ``public` `void` `stop() { ` </div> <div class="line number17 index16 alt2"> ` ``if``( mThread == ``null` `) {` </div> <div class="line number18 index17 alt1"> ` ``return``;` </div> <div class="line number19 index18 alt2"> ` ``} ` </div> <div class="line number20 index19 alt1"> ` ``mIsLooperQuit = ``true``;` </div> <div class="line number21 index20 alt2"> ` ``mThread = ``null``; ` </div> <div class="line number22 index21 alt1"> ` ``}` </div> <div class="line number23 index22 alt2"> </div> <div class="line number24 index23 alt1"> ` ``protected` `Runnable mLooperRunnable = ``new` `Runnable() { ` </div> <div class="line number25 index24 alt2"> </div> <div class="line number26 index25 alt1"> ` ``@Override` </div> <div class="line number27 index26 alt2"> ` ``public` `void` `run() {` </div> <div class="line number28 index27 alt1"> ` ``while``( !mIsLooperQuit ) {` </div> <div class="line number29 index28 alt2"> ` ` </div> <div class="line number30 index29 alt1"> ` ``}` </div> <div class="line number31 index30 alt2"> ` ``}` </div> <div class="line number32 index31 alt1"> ` ``}; ` </div> <div class="line number33 index32 alt2"> `}` </div> </div> </td> </tr> </table> ...

2014年11月17日 · 9 分钟 · 天边的星星

ym——安卓巴士总结了近百个Android优秀开源项

1、Android团队提供的示例项目 如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项目,包含了游戏、图像处理、时间显示、开始菜单快捷方式等。 地址:http://www.apkbus.com/android-13506-1-1.html 2、Remote Droid RemoteDroid是一个Android应用,能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项目为开发者提供了如网络连接、触摸屏手指运动等很好的样例。 地址:http://www.apkbus.com/android-13507-1-1.html 3、TorProxy和Shadow TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。从该项目源代码中,可以掌握socket连接、管理cookie等方法。 地址:http://www.apkbus.com/android-13510-1-1.html 4、Android SMSPopup SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信SMS接口。 地址:http://www.apkbus.com/android-13513-1-1.html 5、Standup Timer Standup Timer应用用于控制站立会议时间,类似秒表倒计时,可以提醒每个人的讲话时间已到,从而保证每个与会者使用时间一样。从该项目的代码中,可以学会如何使用时间函数。另外,这个项目的代码是采用视图view、模型model严格分离的设计思路。 地址:http://www.apkbus.com/android-13514-1-1.html 6、Foursquare 是Foursquare.com的一个客户端应用,该应用主要分为两个模块:API(com.joelapenna.foursquare)和界面前端(com.joelapenna.foursquared)两部分。从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。 地址:http://www.apkbus.com/android-13516-1-1.html 7、Pedometer Pedometer应用用于记录你每天走路步数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新、后台运行服务等。 地址:http://www.apkbus.com/android-13515-1-1.html 8、OpenSudoku-android OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一个网站交互等技术。 地址:http://www.apkbus.com/android-13517-1-1.html 9、ConnectBot ConnectBot是Android平台的一个客户端安全壳应用。从该项目代码中,可以学习到很多Android安全方面的内容,这些是你在开发应用时经常需要考虑的安全问题。 地址:http://www.apkbus.com/android-13518-1-1.html 10、WordPress的Android应用 当然在最后不能不提WordPress的Android应用了,这是WordPress官方开发团队提供的一个项目。从代码中可以学习到XMLRPC调用(当然还有更多的优秀内容)。 地址:http://www.apkbus.com/android-13520-1-1.html Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/develop Android电池监控 Android Battery Dog [http://sourceforge.net/projects/andbatdog/](http://sourceforge.net/projects/andbatdog/) RSS阅读软件 Android RSS [http://code.google.com/p/android-rss/](http://code.google.com/p/android-rss/) Android的PDF阅读器 DroidReader [http://code.google.com/p/droidreader/](http://code.google.com/p/droidreader/) AndroidScripting Environment [http://code.google.com/p/android-scripting/](http://code.google.com/p/android-scripting/) Android小游戏 Android Shapes [http://sourceforge.net/projects/shapes/](http://sourceforge.net/projects/shapes/) AndroidJSON RPC [http://code.google.com/p/android-json-rpc/](http://code.google.com/p/android-json-rpc/) AndroidVNC [http://code.google.com/p/android-vnc/](http://code.google.com/p/android-vnc/) 魅族M8的Android移植 M8 Android [http://code.google.com/p/m8-android-kernel/](http://code.google.com/p/m8-android-kernel/) Android游戏 Amazed [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) Android的社交网络 HelloWorld goes mobile [http://sourceforge.net/projects/helloworldgm/](http://sourceforge.net/projects/helloworldgm/) 手机聊天程序 Android jChat [http://code.google.com/p/jchat4android/](http://code.google.com/p/jchat4android/) Android的GPS轨迹记录 MyTracks [http://code.google.com/p/mytracks/](http://code.google.com/p/mytracks/) Android国际象棋游戏 Honzovy achy [http://sourceforge.net/projects/honzovysachy/](http://sourceforge.net/projects/honzovysachy/) Android旅行记录软件 AndTripLog [http://sourceforge.net/projects/andtriplog/](http://sourceforge.net/projects/andtriplog/) 音乐播放器 Ambient [http://sourceforge.net/projects/ambientmp/](http://sourceforge.net/projects/ambientmp/) Android的邮件客户端 K9mail [http://code.google.com/p/k9mail/](http://code.google.com/p/k9mail/) 多平台应用开发库 QuickConnect [http://sourceforge.net/projects/quickconnect/](http://sourceforge.net/projects/quickconnect/) gPhone手机空战游戏 [http://code.google.com/p/wireless-apps/](http://code.google.com/p/wireless-apps/) Android照片小软件 Panoramio [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) i-jetty [http://code.google.com/p/i-jetty/](http://code.google.com/p/i-jetty/) Android小游戏 DivideAndConquer [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) Android全球时间 AndroidGlobalTime [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) Android2D游戏引擎 Android Angle [http://code.google.com/p/angle/](http://code.google.com/p/angle/) AndroidRuby [http://code.google.com/p/android-ruby/](http://code.google.com/p/android-ruby/) Android-N810 [http://sourceforge.net/projects/android-n810/](http://sourceforge.net/projects/android-n810/) Android的短信应用 Ecclesia [http://sourceforge.net/projects/ecclesia](http://sourceforge.net/projects/ecclesia) Android平台上的JXTA客户端 Peerdroid [http://code.google.com/p/peerdroid/](http://code.google.com/p/peerdroid/) Android游戏引擎 libgdx [http://code.google.com/p/libgdx/](http://code.google.com/p/libgdx/) Android照片小软件 Photostream [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) Alien3dlogo Android 3D游戏引擎 Alien3d [http://code.google.com/p/alien3d/](http://code.google.com/p/alien3d/) WinampRemote Android Server [http://sourceforge.net/projects/winampdroid](http://sourceforge.net/projects/winampdroid) Android的Facebook客户端 Andrico [http://code.google.com/p/andrico/](http://code.google.com/p/andrico/) AndroidApplications Manager [http://sourceforge.net/projects/aam/](http://sourceforge.net/projects/aam/) Java3D图形引擎 Catcake [http://code.google.com/p/catcake/](http://code.google.com/p/catcake/) android-gcc-objc2-0 [http://code.google.com/p/android-gcc-objc2-0/](http://code.google.com/p/android-gcc-objc2-0/) 九宫格数独游戏 OpenSudoku [http://code.google.com/p/opensudoku-android/](http://code.google.com/p/opensudoku-android/) Android铃声扩展工具 RingsExtended [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) JavaEyeAndroid client [http://code.google.com/p/javaeye-android-client/](http://code.google.com/p/javaeye-android-client/) RemoteDroid [http://code.google.com/p/remotedroid/](http://code.google.com/p/remotedroid/) Android小游戏 Clickin2DaBeat [http://code.google.com/p/apps-for-android/](http://code.google.com/p/apps-for-android/) 中医大夫助理信息系统 zz-doctor [http://code.google.com/p/zz-doctor/](http://code.google.com/p/zz-doctor/) FacebookConnect for Android [http://code.google.com/p/fbconnect-android/](http://code.google.com/p/fbconnect-android/) AndroidSMSPopup [http://code.google.com/p/android-smspopup/](http://code.google.com/p/android-smspopup/) FreeTTS-Android [http://sourceforge.net/projects/freettsandroidi](http://sourceforge.net/projects/freettsandroidi) Foursquare.com的客户端 Foursquar [http://code.google.com/p/foursquared/](http://code.google.com/p/foursquared/) 条形码扫描仪 Android PC_BCR [http://code.google.com/p/android-pcbcr/](http://code.google.com/p/android-pcbcr/) android天气预报源码[http://www.apkbus.com/android-2240-1-1.html](http://www.apkbus.com/android-2240-1-1.html) android源码之电影购票源码[http://www.apkbus.com/android-2506-1-1.html](http://www.apkbus.com/android-2506-1-1.html) android的基站、WIFI、GPS定位集合,源码下载[。](http://www.apkbus.com/android-15281-1-1.html):[http://www.apkbus.com/android-15281-1-1.html](http://www.apkbus.com/android-15281-1-1.html) 一个100行代码写的android计算器:[http://www.apkbus.com/android-2231-1-1.html](http://www.apkbus.com/android-2231-1-1.html) Android卷曲翻页效果Demo:[http://www.apkbus.com/android-3738-1-2.html](http://www.apkbus.com/android-3738-1-2.html) android文件浏览器代码:[http://www.apkbus.com/android-2242-1-2.html](http://www.apkbus.com/android-2242-1-2.html) android源码超炫的3D特效程序管理功能:[http://www.apkbus.com/android-2046-1-2.html](http://www.apkbus.com/android-2046-1-2.html) Android手机平台重力感应Demo :[http://www.apkbus.com/android-45-1-2.html](http://www.apkbus.com/android-45-1-2.html) 一个android阅读器的源码[CoolReader](http://www.apkbus.com/android-2078-1-1.html):[http://www.apkbus.com/android-2078-1-2.html](http://www.apkbus.com/android-2078-1-2.html) 国外开源android音乐播放器[http://www.apkbus.com/android-2072-1-2.html](http://www.apkbus.com/android-2072-1-2.html) 一个综合了各个类型的对话框的demo :[http://www.apkbus.com/android-2086-1-2.html](http://www.apkbus.com/android-2086-1-2.html) 分享27个各种类型的demo:[http://www.apkbus.com/android-2083-1-2.html](http://www.apkbus.com/android-2083-1-2.html) android bluetooth [安卓](http://www.apkbus.com/)蓝牙源码下载:[http://www.apkbus.com/android-16841-1-2.html](http://www.apkbus.com/android-16841-1-2.html) android豆瓣手机客户端源码:[http://www.apkbus.com/android-1495-1-3.html](http://www.apkbus.com/android-1495-1-3.html) 转自:http://blog.csdn.net/cym492224103/article/details/38469251

2014年11月17日 · 1 分钟 · 天边的星星

Android开发实践:自定义带动画的View

对于一个自定义View来说,onMeasure只是用来计算View尺寸,onDraw()才是真正执行View的绘制,所以一般我们都需要重写 onDraw()函数来绘制我们期望的UI界面。下面我以一个具体的例子探索自定义View的onDraw()的实现过程和关键点。 我们的目标是制作一个柱状图动画,View的动画启动后,会显示一排柱状图增长的画面,这种动画多用于财务类或者统计类的APP中,效果如图所示(截屏的格式转换过程导致有些变形,还好不影响演示,图中设置了反复播放,真机上只会播放一次): 1. 首先,自定义View的派生类 ** ** 1 <div class="line number2 index1 alt1"> 2 </div> <div class="line number3 index2 alt2"> 3 </div> <div class="line number4 index3 alt1"> 4 </div> <div class="line number5 index4 alt2"> 5 </div> <div class="line number6 index5 alt1"> 6 </div> <div class="line number7 index6 alt2"> 7 </div> <div class="line number8 index7 alt1"> 8 </div> <div class="line number9 index8 alt2"> 9 </div> <div class="line number10 index9 alt1"> 10 </div> <div class="line number11 index10 alt2"> 11 </div> <div class="line number12 index11 alt1"> 12 </div> <div class="line number13 index12 alt2"> 13 </div> <div class="line number14 index13 alt1"> 14 </div> <div class="line number15 index14 alt2"> 15 </div> <div class="line number16 index15 alt1"> 16 </div> <div class="line number17 index16 alt2"> 17 </div> <div class="line number18 index17 alt1"> 18 </div> <div class="line number19 index18 alt2"> 19 </div> <div class="line number20 index19 alt1"> 20 </div> <div class="line number21 index20 alt2"> 21 </div> <div class="line number22 index21 alt1"> 22 </div> <div class="line number23 index22 alt2"> 23 </div> <div class="line number24 index23 alt1"> 24 </div> <div class="line number25 index24 alt2"> 25 </div> </td> <td class="code"> <div class="container"> <div class="line number1 index0 alt2"> `public` `class` `AnimatorView ``extends` `View {` </div> <div class="line number2 index1 alt1"> </div> <div class="line number3 index2 alt2"> ` ``private` `Paint mPaint; ` </div> <div class="line number4 index3 alt1"> ` ` </div> <div class="line number5 index4 alt2"> ` ``public` `AnimatorView(Context context) {` </div> <div class="line number6 index5 alt1"> ` ``super``(context); ` </div> <div class="line number7 index6 alt2"> ` ``initialize();` </div> <div class="line number8 index7 alt1"> ` ``}` </div> <div class="line number9 index8 alt2"> </div> <div class="line number10 index9 alt1"> ` ``public` `AnimatorView(Context context, AttributeSet attrs) {` </div> <div class="line number11 index10 alt2"> ` ``super``(context, attrs);` </div> <div class="line number12 index11 alt1"> ` ``initialize();` </div> <div class="line number13 index12 alt2"> ` ``}` </div> <div class="line number14 index13 alt1"> ` ` </div> <div class="line number15 index14 alt2"> ` ``public` `AnimatorView(Context context, AttributeSet attrs, ``int` `defStyle) {` </div> <div class="line number16 index15 alt1"> ` ``super``(context, attrs, defStyle);` </div> <div class="line number17 index16 alt2"> ` ``initialize();` </div> <div class="line number18 index17 alt1"> ` ``}` </div> <div class="line number19 index18 alt2"> ` ` </div> <div class="line number20 index19 alt1"> ` ``protected` `void` `initialize() {` </div> <div class="line number21 index20 alt2"> ` ``mPaint = ``new` `Paint(); ` </div> <div class="line number22 index21 alt1"> ` ``mPaint.setAntiAlias(``true``);` </div> <div class="line number23 index22 alt2"> ` ``mPaint.setStyle(Style.FILL); ` </div> <div class="line number24 index23 alt1"> ` ``} ` </div> <div class="line number25 index24 alt2"> `}` </div> </div> </td> </tr> </table> 注: Paint是用来绘图的画笔,可以设置其样式、画面的粗细、填充模式、颜色等等。 ...

2014年11月17日 · 7 分钟 · 天边的星星

Android开发实践:为什么要继承onMeasure()

Android开发中偶尔会用到自定义View,一般情况下,自定义View都需要继承View类的onMeasure方法,那么,为什么要继承 onMeasure()函数呢?什么情况下要继承onMeasure()?系统默认的onMeasure()函数行为是怎样的 ?本文就探究探究这些问题。 首先,我们写一个自定义View,直接调用系统默认的onMeasure函数,看看会是怎样的现象: 1 <div class="line number2 index1 alt1"> 2 </div> <div class="line number3 index2 alt2"> 3 </div> <div class="line number4 index3 alt1"> 4 </div> <div class="line number5 index4 alt2"> 5 </div> <div class="line number6 index5 alt1"> 6 </div> <div class="line number7 index6 alt2"> 7 </div> <div class="line number8 index7 alt1"> 8 </div> <div class="line number9 index8 alt2"> 9 </div> <div class="line number10 index9 alt1"> 10 </div> <div class="line number11 index10 alt2"> 11 </div> <div class="line number12 index11 alt1"> 12 </div> <div class="line number13 index12 alt2"> 13 </div> <div class="line number14 index13 alt1"> 14 </div> <div class="line number15 index14 alt2"> 15 </div> <div class="line number16 index15 alt1"> 16 </div> <div class="line number17 index16 alt2"> 17 </div> <div class="line number18 index17 alt1"> 18 </div> <div class="line number19 index18 alt2"> 19 </div> <div class="line number20 index19 alt1"> 20 </div> <div class="line number21 index20 alt2"> 21 </div> <div class="line number22 index21 alt1"> 22 </div> </td> <td class="code"> <div class="container"> <div class="line number1 index0 alt2"> `package` `com.titcktick.customview;` </div> <div class="line number2 index1 alt1"> </div> <div class="line number3 index2 alt2"> `import` `android.content.Context;` </div> <div class="line number4 index3 alt1"> `import` `android.util.AttributeSet;` </div> <div class="line number5 index4 alt2"> `import` `android.view.View;` </div> <div class="line number6 index5 alt1"> </div> <div class="line number7 index6 alt2"> `public` `class` `CustomView ``extends` `View {` </div> <div class="line number8 index7 alt1"> ` ` </div> <div class="line number9 index8 alt2"> ` ``public` `CustomView(Context context) {` </div> <div class="line number10 index9 alt1"> ` ``super``(context); ` </div> <div class="line number11 index10 alt2"> ` ``}` </div> <div class="line number12 index11 alt1"> </div> <div class="line number13 index12 alt2"> ` ``public` `CustomView(Context context, AttributeSet attrs) {` </div> <div class="line number14 index13 alt1"> ` ``super``(context, attrs); ` </div> <div class="line number15 index14 alt2"> ` ``}` </div> <div class="line number16 index15 alt1"> ` ` </div> <div class="line number17 index16 alt2"> ` ``@Override` </div> <div class="line number18 index17 alt1"> ` ``protected` `void` `onMeasure(``int` `widthMeasureSpec, ``int` `heightMeasureSpec) { ` </div> <div class="line number19 index18 alt2"> ` ``super``.onMeasure(widthMeasureSpec, heightMeasureSpec);` </div> <div class="line number20 index19 alt1"> ` ``}` </div> <div class="line number21 index20 alt2"> </div> <div class="line number22 index21 alt1"> `}` </div> </div> </td> </tr> </table> ...

2014年11月17日 · 7 分钟 · 天边的星星

Android开发实践:自定义ViewGroup的onLayout()分析

Android开发中,对于自定义View,分为两种,一种 是自定义控件(继承View类),另一种是自定义布局容器(继承ViewGroup)。如果是自定义控件,则一般需要重载两个方法,一个是 onMeasure(),用来测量控件尺寸,另一个是onDraw(),用来绘制控件的UI。而自定义布局容器,则一般需要实现/重载三个方法,一个是 onMeasure(),也是用来测量尺寸;一个是onLayout(),用来布局子控件;还有一个是dispatchDraw(),用来绘制UI。 本文主要分析自定义ViewGroup的onLayout()方法的实现。 ViewGroup 类的onLayout()函数是abstract型,继承者必须实现,由于ViewGroup的定位就是一个容器,用来盛放子控件的,所以就必须定义要以 什么的方式来盛放,比如LinearLayout就是以横向或者纵向顺序存放,而RelativeLayout则以相对位置来摆放子控件,同样,我们的自 定义ViewGroup也必须给出我们期望的布局方式,而这个定义就通过onLayout()函数来实现。 我们通过实现一个水平优先布局的视图容器来更加深入地了解onLayout()的实现吧,效果如图所示(黑色方块为子控件,白色部分为自定义布局容器)。该容器的布局方式是,首先水平方向上摆放子控件,水平方向放不下了,则另起一行继续水平摆放。 ** 1. 自定义ViewGroup的派生类** 第一步,则是自定ViewGroup的派生类,继承默认的构造函数。 1 <div class="line number2 index1 alt1"> 2 </div> <div class="line number3 index2 alt2"> 3 </div> <div class="line number4 index3 alt1"> 4 </div> <div class="line number5 index4 alt2"> 5 </div> <div class="line number6 index5 alt1"> 6 </div> <div class="line number7 index6 alt2"> 7 </div> <div class="line number8 index7 alt1"> 8 </div> <div class="line number9 index8 alt2"> 9 </div> <div class="line number10 index9 alt1"> 10 </div> <div class="line number11 index10 alt2"> 11 </div> <div class="line number12 index11 alt1"> 12 </div> <div class="line number13 index12 alt2"> 13 </div> <div class="line number14 index13 alt1"> 14 </div> </td> <td class="code"> <div class="container"> <div class="line number1 index0 alt2"> `public` `class` `CustomViewGroup ``extends` `ViewGroup {` </div> <div class="line number2 index1 alt1"> ` ` </div> <div class="line number3 index2 alt2"> ` ``public` `CustomViewGroup(Context context) {` </div> <div class="line number4 index3 alt1"> ` ``super``(context); ` </div> <div class="line number5 index4 alt2"> ` ``}` </div> <div class="line number6 index5 alt1"> ` ` </div> <div class="line number7 index6 alt2"> ` ``public` `CustomViewGroup(Context context, AttributeSet attrs) {` </div> <div class="line number8 index7 alt1"> ` ``super``(context, attrs); ` </div> <div class="line number9 index8 alt2"> ` ``}` </div> <div class="line number10 index9 alt1"> ` ` </div> <div class="line number11 index10 alt2"> ` ``public` `CustomViewGroup(Context context, AttributeSet attrs, intdefStyle) {` </div> <div class="line number12 index11 alt1"> ` ``super``(context, attrs, defStyle);` </div> <div class="line number13 index12 alt2"> ` ``}` </div> <div class="line number14 index13 alt1"> `}` </div> </div> </td> </tr> </table> ...

2014年11月17日 · 13 分钟 · 天边的星星

解决谷歌google不能访问造成wordpress打开缓慢的问题

1. 前台页面访问Google AJAX Libraries API(一般多是在主题里调用的) AJAX Libraries API架构在Google Code上,提供了JQuery 等JavaScript库,本来CDN是为我们提供更快更稳定的访问,但是无奈在国内我们没法正常享受谷歌的CDN服务啊。那我们只有转投国内了。现在国内也有很好的CDN服务,并且在国内还是使用国内的CDN公共库比较安全,下面先提供几个服务链接供您选择吧: http://lib.sinaapp.com/ http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs http://www.staticfile.org/ http://jscdn.upai.com/ 下面说解决办法,以替换成百度CDN为例: 一般是在主题模板的header.php文件中找到引用谷歌CDN的代码处,比如我的是这句: ``` <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=3.4.2'></script> ``` 替换成百度CDN: ``` <script type='text/javascript' src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script> ``` ** 后台页面获取Google字体库** 这个问题有两个解决办法,分别适用于两类使用人群 2.1 后台无所谓字体好看不好看,决定彻底不使用谷歌字体了; 解决办法:在wordpress 后台安装插件。在插件中搜索 Disable Google Fonts,选择安装,然后启用,这样就可以禁止Google字体的加载。 2.2 强迫症+完美主义:稍微麻烦点把字体拿回来放自己服务器上吧,需要FQ一下哦。 解决办法: a. 就目前现状访问下谷歌是件不容易的事情,那我们需要FQ或是其他办法先把那些个字体文件下载回来,首先利用ie的开发人员工具、chrome开发者工具、firefox firebug工具 中的network查看页面加载时访问谷歌字体服务的URL,复制此URL在浏览器中打开(FQ中),这时我们看到了字体描述文件内容,并且找到了woff文件的url,分别把这几个woff文件下载下来; b. 将下载好的woff文件(文件名不做修改了,偷懒)放在\wp-includes\fonts\google 目录中, google是我自建的; c. 拷贝a步骤URL显示内容,另存为一个css文件,把字体访问url改成我们本地的访问路径,命名为google-font.css 放在\wp-includes\css目录中(附该css文件的内容如下); ![复制代码](http://common.cnblogs.com/images/copycode.gif) ``` @font-face { font-family: ‘Open Sans’; font-style: normal; font-weight: 300; src: local(‘Open Sans Light’), local(‘OpenSans-Light’), url(../fonts/google/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format(‘woff’); } @font-face { font-family: ‘Open Sans’; font-style: normal; font-weight: 400; src: local(‘Open Sans’), local(‘OpenSans’), url(../fonts/google/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format(‘woff’); } @font-face { font-family: ‘Open Sans’; font-style: normal; font-weight: 600; src: local(‘Open Sans Semibold’), local(‘OpenSans-Semibold’), url(../fonts/google/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format(‘woff’); } @font-face { font-family: ‘Open Sans’; font-style: italic; font-weight: 300; src: local(‘Open Sans Light Italic’), local(‘OpenSansLight-Italic’), url(../fonts/google/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format(‘woff’); } @font-face { font-family: ‘Open Sans’; font-style: italic; font-weight: 400; src: local(‘Open Sans Italic’), local(‘OpenSans-Italic’), url(../fonts/google/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format(‘woff’); } @font-face { font-family: ‘Open Sans’; font-style: italic; font-weight: 600; src: local(‘Open Sans Semibold Italic’), local(‘OpenSans-SemiboldItalic’), url(../fonts/google/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format(‘woff’); } ...

2014年11月14日 · 1 分钟 · 天边的星星

android ListView 设置分割线 Divider

这是一个极其隐蔽的 BUG 首先需求是:用 ColorDrawable 设置 ListView 分割线 ``` listView.setDivider(new ColorDrawable(0xffd4d5d6)); ``` 这样原理上绝对说得过去,但是你怎么都看不到效果,为什么呢,看源码吧! ![复制代码](http://common.cnblogs.com/images/copycode.gif) public void setDivider(Drawable divider) { if (divider != null) { mDividerHeight = divider.getIntrinsicHeight(); } else { mDividerHeight = 0; } //.... ![复制代码](http://common.cnblogs.com/images/copycode.gif) mDividerHeight 是分割线的高度,我们再看 [Drawable](eclipse-javadoc:%E2%98%82=MopoGameLauncher/E:%5C/adt-bundle-windows-x86_64-20130219%5C/sdk%5C/platforms%5C/android-17%5C/android.jar%3Candroid.graphics.drawable(Drawable.class%E2%98%83Drawable).getIntrinsicHeight() ``` public int getIntrinsicHeight() { return -1; } ``` 返回 -1,而 ColorDrawable 并没有重载此方法! 有些人运气好,在后面加了一句 listView.setDividerHeight(2); 这样问题就解决了,但是当你把这句放前面,就不知道为什么了! 所以正确方法是: ``` listView.setDivider(new ColorDrawable(0xffd4d5d6)); listView.setDividerHeight(2); ```

2014年11月13日 · 1 分钟 · 天边的星星