羊杂碎~

BTD

————————————————技术吐槽慎入————————————————

最近用架了一个WP,果然用过之后就有把自己blog变成WP的冲动啊……不过好像没啥用,重要的是我应该努力更新blog~

开放的网站就是考虑的多,用IE123456789测试真麻烦,或者说倒霉的IE6。我刚知道IE6连PNG的透明图层都不知道,真是WTF啊,!DOCTYPE加上之后GTE IE7以及所有webkit安然无恙,然后IE6就…………

更可恶的是png我hack掉了,但是js写出来的slider在IE6下居然也有bug,一气之下我果然还是——

您所用的浏览器版本过低,请您立刻升级

BTW:本blog不欢迎任何IE6浏览器用户,看到自觉离开或更新谢谢

——————————————————以下没有内容,谢谢————————————————————

【评测】爱硕A816平板入手体验

昨天入手了山寨强机爱硕A816平板,玩了一天今天写一下体验。图片自己百度,配置自己淘宝。

CPU是A8的处理器,是三星的S5PV210,这个芯片应该说是比较不错的,和以前的神马RK2818之流完全不在一个档次上。基本上在A8架构的处理器中也算不错了,实际测试也如此。内存是512M DDR2,基本够用。系统是Android2.2。据说之后会升级到2.3,甚至3.0。

8寸的800×600显示屏,屏本身应该说出乎意料的没那么糟糕(额)。可视角度基本让人满意,比常见的山寨要好不少,不必特意正面看屏幕。亮度比较高。但是分辨率设定比较恶心,4:3的屏幕让很多游戏啊软件啊都很郁闷。不过比较好的应用都能考虑到这个所以支持的不错,比如怒鸟,切水果,NFS之类都能全屏完美运行。触摸比较灵敏,但是偶尔会误操作。切水果打鸟都没问题。按压四周边框的时候屏幕会有水波纹出现。反光很严重,估计贴一个防眩光的膜就好了。

做工方面,外壳不是十分平整,但是可以接受,后盖钢琴漆感觉还不错,整机很厚实而且很沉(当然不要跟你的笔电比),单手拿久了会吃力。接口都在一侧但是排列的比较松散,应该不会干扰。背部有一个喇叭开孔。正面三个按钮除了按键音有点大之外手感还好。

wifi信号未测试,能收到隔墙的信号吧至少。

开机速度和笔记本差不多。具体使用的时候就体现出S5PV210的强大了。动态壁纸非常流畅,常用软件、上网更是不在话下。运行大型游戏基本也没问题(估计我测试过的要求最高达就是nfs了,很流畅)。重力感应也比较灵敏,玩平衡球可以玩,但是不知道是否因为太灵敏了屏幕经常上下左右变化,平放在桌子上的时候时不时就调转了屏幕方向,关闭Android的自动调整方向选项后依然如此,比较郁闷。遗憾的是不支持多点触摸,很多游戏玩不爽。但是触摸精度不错。

对软件的兼容性不错,目前安装了不下50个软件,极少遇到不能使用的情况。但是有部分软件由于分辨率的原因不能全屏/全屏效果不好/排版错误。不过都在可以容忍的范围内。

视频播放没有测试。

1天使用过程中死机过2、3次吧,关机的时候会电流声啪地一下。死机基本上是运行大型软件或者我频繁操作(下软件装软件运行软件)的问题。由于Android的程序都是后台驻留的,所以要时常清理下后台程序,对提高软件运行速度非常有帮助。内存不足的时候会卡死,然后报错之后屏幕会变暗然后闪烁(不是正常的闪烁),之后慢慢恢复正常。

待机时间方面。从电量80%开始计时,最高亮度屏幕+wifi不间断使用,坚持到3个小时的时候开始报电量低。1个小时候自动关机。可见电源管理上还需要加强,充满电预计能使用将近5个小时吧也许。当然因为是80%开始计算的加上电量检测不准,实际上还需要再测试。

充电的话,四个小时以内就能充满。之所以说以内时因为我睡觉的过程中已经充满了,所以不知道具体多久。

总结下:性能很强,做工不算山寨,操控感不错,1200块钱的价格也不算太高。遗憾的是不支持多点触控,不是电容屏。因此我认为这东西值得购买(但是蓝魔W10上市之后我就不一定这么说了)。

大家都来恢复blog吧~

刚才跟狐狸说起blog,这东西被SNS网站打压地确实够呛(此处本来想引用下之前自己写的关于SNS灭blog的文章的链接的,但是发现找不到了杯具)

不过人人网上的各种新鲜事刷的太快了,感觉还是那么浮躁,没办法安心写一点想写的东西,没办法让大家认真或不认真地互相看看对方的文字。人人上把各种资讯和信息推送到一个庞大的网之中,却没有blog这种属于自己的一小片天空,等待朋友来访问的感觉。

所以呢,如果你也曾经或现在一直在用blog,如果你也和我有相同的感受,我们不妨交换下链接,试试重拾blog,写一些真正想写的文字。

那么关于我的blog,我对美食动漫、技术、生活吐槽都非常的有爱,这些都是我的主题(不过最近由于荒凉所以我都是更新存档用的技术流文字,我会改的)。

地址是:http://loland.tk,当然你也可以使用更稳定的:http://zsefvlol.blogbus.com,这两个地址完全等价

请留下你的地址(以及请让我知道下你是谁),我会加到友链的。如果你还没有blog,那么我推荐你使用blogbus的blog(它比较干净),对技术党当然推荐WordPress,欢迎加入

【Android开发学习笔记】关于WebView自我调用链接的问题

之前一直很疑惑,看了很多webview控件的简单实例,发现打开网页是正常的,但是单击链接的时候,会自动调用android自带的浏览器来打开链接,苦苦搜寻后终于找到问题所在

参考《Android Developers》,感谢

  1. You now have a simplest web page viewer. It’s not quite a browser yet because as soon as you click a link, the default Android Browser handles the Intent to view a web page, because this Activity isn’t technically enabled to do so. Instead of adding an intent filter to view web pages, you can override the WebViewClient class and enable thisActivity to handle its own URL requests.

  2. In the HelloAndroid Activity, add this nested class:
    private class HelloWebViewClient extends WebViewClient {
       
    @Override
       
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view
    .loadUrl(url);
           
    return true;
       
    }
    }
  3. Then towards the end of the onCreate(Bundle) method, set an instance of the HelloWebViewClient as the WebViewClient:
    mWebView.setWebViewClient(new HelloWebViewClient());

关于shouldOverrideUrlLoading,见下

public boolean shouldOverrideUrlLoading (WebView view, String url)

Since: API Level 1

Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView. If WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the url. If WebViewClient is provided, return true means the host application handles the url, while return false means the current WebView handles the url.

Parameters
view The WebView that is initiating the callback.
url The url to be loaded.
Returns
  • True if the host application wants to leave the current WebView and handle the url itself, otherwise return false.

 

【转帖】【Android开发学习笔记】关于AVD中LED Density


http://xy0811.spaces.live.com/Blog/cns!F8AECD2A067A6B17!1508.entry

1.          什么是density

1)         density
density
表示每英寸有多少个显示点(逻辑值),它的单位是dpidot per inch,通常屏幕大时,density就大,屏幕小时,density就小,通常

屏幕实际分辨率为240px*400px时,density=120
屏幕实际分辨率为320px*533px
density=160
屏幕实际分辨率为480px*800pxdensity=240

2)         分辨率
是整个屏是多少点,比如800×480,它是软件的显示单位

3)         Android1.6版本开始支持density(对应API Level 4)
用于解决应用在屏幕大小不同的硬件上正常显示的问题

2.          相关代码及设置

1)         AndroidManifest.xml


这个参数在
API Level 4也就是SDK 1.6以后才启用的,而且1.6版本的API Level 4的应用默认值就是True

2)         资源目录名(android 2.0以后)
res/xxx-hdpi         
density240时,使用此目录下的资源
res/xxx-mdpi        
density160时,使用此目录下的资源
res/xxx-ldpi          
density120时,使用此目录下的资源
res/xxx                 
不常后缀,为默认设置,同xxx-mdpi

3)         资源单位(xml文件中定义大小的单位)

a)        dp=dip=dx (Density independent pixel)
基于屏幕密度的抽象单位,设备无关的点,用于说明与密度无关的尺寸和位置。这些单位是相对于一个160dpi的屏幕,所有一个dp160dpi屏幕上的一个点。

b)         px
px
指软件的单位点,设备相关的点

c)          具体使用

                                       i.              布局时尽量使用单位dip,少使用px
若使用px,如果设某控件大小400x400px,在800×480上显示正常,而在533×320的屏上就超出屏幕了

若使用dp,如果设某控件大小为160x160dp,就可以通过从系统中取density来算出真正的大小,比如在800×480屏的density设为240,而533×320屏的density设为160,借以下公式计算
pixels = dips * (density / 160)
800×480在屏中显示240象素,而在533×320的屏中显示为160象素,控件在屏中显示的比例是一样的。

                                      ii.              内部的处理过程分为三步:
screen中其它元素,转为应用的值,计算应用各控件位置,然后再转成800×480以供真正显示
res-xxx不存在,则读取res有的资源,然后对其做相应缩放

3.          实现density的关键源码

1)         BitmapFactory.java(用于缩放图片)

2)         ComptibilityInfo.java(用于位置计算)

 

 

另外,在网页里可以对不同的density规定不同的CSS,好在我们设备固定,哼

Building web pages to support different screen densities

A screen’s density is based on it’s screen resolution and physical size. A screen with low density has fewer available pixels per inch, where a screen with high density has more — sometimes significantly more — pixels per inch. The density of a screen is important because, other things being equal, a UI element (such as a button) whose height and width are defined in terms of screen pixels will appear larger on the lower density screen and smaller on the higher density screen. For simplicity, Android collapses all actual screen densities into three generalized densities:high, medium, and low.

By default, WebView scales a web page so that it is drawn at a size that matches the default appearance on a medium density screen. So, it applies 1.5x scaling on a high density screen (because its pixels are smaller) and 0.75x scaling on a low density screen (because its pixels are bigger). Starting with API Level 5 (Android 2.0), WebView supports DOM, CSS, and meta tag features to help you (as a web developer) target screens with different screen densities.

Here’s a summary of the features you can use to handle different screen densities:

  • The window.devicePixelRatio DOM property. The value of this property specifies the default scaling factor used for the current device. For example, if the value ofwindow.devicePixelRatio is “1.0”, then the device is considered a medium density (mdpi) device and default scaling is not applied to the web page; if the value is “1.5”, then the device is considered a high density device (hdpi) and the page content is scaled 1.5x; if the value is “0.75”, then the device is considered a low density device (ldpi) and the content is scaled 0.75x. However, if you specify the "target-densitydpi" meta property (discussed below), then you can stop this default scaling behavior.
  • The -webkit-device-pixel-ratio CSS media query. Use this to specify the screen densities for which this style sheet is to be used. The corresponding value should be either “0.75”, “1”, or “1.5”, to indicate that the styles are for devices with low density, medium density, or high density screens, respectively. For example:
     <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />

    The hdpi.css stylesheet is only used for devices with a screen pixel ration of 1.5, which is the high density pixel ratio.

  • The target-densitydpi property for the viewport meta tag. You can use this to specify the target density for which the web page is designed, using the following values:
    • device-dpi – Use the device’s native dpi as the target dpi. Default scaling never occurs.
    • high-dpi – Use hdpi as the target dpi. Medium and low density screens scale down as appropriate.
    • medium-dpi – Use mdpi as the target dpi. High density screens scale up and low density screens scale down. This is also the default behavior.
    • low-dpi – Use ldpi as the target dpi. Medium and high density screens scale up as appropriate.
    • <value> – Specify a dpi value to use as the target dpi (accepted values are 70-400).

    Here’s an example meta tag to specify the target density:

    <meta name="viewport" content="target-densitydpi=device-dpi" />

If you want to modify your web page for different densities, by using the -webkit-device-pixel-ratio CSS media query and/or the window.devicePixelRatio DOM property, then you should set the target-densitydpi meta property to device-dpi. This stops Android from performing scaling in your web page and allows you to make the necessary adjustments for each density via CSS and JavaScript.