ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩aaaa,中文字幕日本不卡,国产h在线观看http://www.aygfsteel.com/liuyanbo/category/49628.htmlzh-cnSun, 26 May 2019 06:22:32 GMTSun, 26 May 2019 06:22:32 GMT60Ubuntu16.04配置Android¾~–译环境http://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433702.html天宇恒星天宇恒星Wed, 03 Apr 2019 03:29:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433702.htmlhttp://www.aygfsteel.com/liuyanbo/comments/433702.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433702.html#Feedback0http://www.aygfsteel.com/liuyanbo/comments/commentRss/433702.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/433702.html
sudo apt-get install -y  openjdk-8-jdk openjdk-8-jre git  build-essential libncurses5-dev:i386  libx11-dev:i386  libreadline6-dev:i386 g++-multilib  tofrodos python-markdown libxml2-utils xsltproc   dpkg-dev  libesd0-dev  git-core gnupg flex bison gperf build-essential  zip curl  gcc-multilib g++-multilib  libc6-dev-i386  lib32ncurses5-dev x11proto-core-dev libx11-dev   ccache   libxml2-utils xsltproc unzip m4 python-pip smbclient libgl1-mesa-dev libsdl1.2-dev zlib1g-dev:i386  lib32z-dev zlib1g-dev lib32z1 lib32ncurses5 lib32stdc++6 libbz2-1.0:i386 libssl-dev


]]>
解压System.img的方æ³?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433701.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Wed, 03 Apr 2019 03:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433701.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/433701.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/433701.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/433701.html</trackback:ping><description><![CDATA[<br /><pre bash"="" style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; padding: 15px; margin-top: 0px; margin-bottom: 20px; line-height: 1.42857; overflow-wrap: normal; color: #abb2bf; background: #282c34; border: 1px solid #cccccc; border-radius: 4px; word-break: break-word !important;"><code style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: inherit; background-color: transparent; border-radius: 0px; padding: 0px; border: none; vertical-align: middle;">$ simg2img system.img system.ext4.img<br /><div>$ mkdir system <br />$ sudo mount -t ext4 system.ext4.img system</div></code></pre><img src ="http://www.aygfsteel.com/liuyanbo/aggbug/433701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2019-04-03 11:27 <a href="http://www.aygfsteel.com/liuyanbo/archive/2019/04/03/433701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>l2tp vpn 在Android6.0/4G¾|‘络模式下不生效的处理方æ³?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2017/05/31/432563.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Wed, 31 May 2017 06:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2017/05/31/432563.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/432563.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2017/05/31/432563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/432563.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/432563.html</trackback:ping><description><![CDATA[×#×#4636#×#× ˜q›æ‰‹æœÞZ¿¡æ¯ï¼Œ“切换DNS‹‚€æŸ?#8221;修改ä¸?allowed<img src ="http://www.aygfsteel.com/liuyanbo/aggbug/432563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2017-05-31 14:48 <a href="http://www.aygfsteel.com/liuyanbo/archive/2017/05/31/432563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android源码¾~–译环境中集成leakcanary内存泄露‹‚€‹¹‹å·¥å…ïLš„æ–ÒŽ(gu¨©)³•http://www.aygfsteel.com/liuyanbo/archive/2016/12/31/432223.html天宇恒星天宇恒星Sat, 31 Dec 2016 09:06:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2016/12/31/432223.htmlhttp://www.aygfsteel.com/liuyanbo/comments/432223.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2016/12/31/432223.html#Feedback0http://www.aygfsteel.com/liuyanbo/comments/commentRss/432223.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/432223.html
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS) 
LOCAL_STATIC_JAVA_AAR_LIBRARIES := leakcanary-android-aar leakcanary-watcher-aar leakcanary-analyzer-aar 
LOCAL_STATIC_JAVA_LIBRARIES :=  haha
LOCAL_MODULE_TAGS := optional 
LOCAL_AAPT_FLAGS := \
    --auto-add-overlay \
    --extra-packages com.squareup.leakcanary    
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_SRC_FILES := \
        $(call all-java-files-under, src)  
LOCAL_PACKAGE_NAME := XXXXX 
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := 
        haha:libs/haha-2.0.3.jar \
        leakcanary-android-aar:libs/leakcanary-android-1.5.aar \
        leakcanary-watcher-aar:libs/leakcanary-watcher-1.5.aar \
        leakcanary-analyzer-aar:libs/leakcanary-analyzer-1.5.aar 
include $(BUILD_MULTI_PREBUILT)

include $(call all-makefiles-under,$(LOCAL_PATH))



]]>
Ubuntu 14.04 配置Android¾~–译环境http://www.aygfsteel.com/liuyanbo/archive/2016/06/22/430988.html天宇恒星天宇恒星Wed, 22 Jun 2016 06:37:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2016/06/22/430988.htmlhttp://www.aygfsteel.com/liuyanbo/comments/430988.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2016/06/22/430988.html#Feedback0http://www.aygfsteel.com/liuyanbo/comments/commentRss/430988.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/430988.html1.安装相关软äšg
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev gcc-multilib g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libsdl-dev libesd0-dev libncurses5-dev lib32ncurses5 lib32stdc++6 rapidsvn nautilus-open-terminal libswitch-perl subversion openjdk-7-jdk lib32z1 libusb-dev libpcap-dev lib32bz2-1.0 libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9

2.讄¡½®çŽ¯å¢ƒå˜é‡åQŒä¿®æ”?bashrc
export ANDROID_SDK_HOME=/home/xxx/android_env/adt-bundle-linux-x86_64/sdk
export ANDROID_HOME=/home/xxx/android_env/adt-bundle-linux-x86_64/sdk
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools:$GRADLE_HOME/bin:$PATH:
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export USE_CCACHE=1
export MAVEN_HOME=/home/xxx/android_env/apache-maven-3.3.9/
export GRADLE_HOME=/home/xxx/android_env/gradle-2.10
export GRADLE_USER_HOME=/home/xxx/android_env/gradle-2.10
export ANT_HOME=/home/xxx/android_env/apache-ant-1.9.7
export PATH=$GRADLE_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin:$PATH
export GOROOT=/root/go
export GOPATH=/root/goworkspace
export PATH="/root/go/bin:/root/goworkspace/bin:"$PATH


]]>
如何解决Android 5.0中出现的警告åQšService Intent must be explicit http://www.aygfsteel.com/liuyanbo/archive/2016/05/31/430715.html天宇恒星天宇恒星Tue, 31 May 2016 05:19:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2016/05/31/430715.htmlhttp://www.aygfsteel.com/liuyanbo/comments/430715.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2016/05/31/430715.html#Feedback0http://www.aygfsteel.com/liuyanbo/comments/commentRss/430715.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/430715.html1、设¾|®Actionå’ŒpackageNameåQ?br style="word-wrap: break-word;" />参考代码如下:
Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");//你定义的service的action
mIntent.setPackage(getPackageName());//˜q™é‡Œä½ éœ€è¦è®¾¾|®ä½ åº”用的包å?/span>
context.startService(mIntent);
此方式是google官方推荐使用的解å†Ïx–¹æ³•ã€?/span>

2、将隐式启动转换为显½Cºå¯åŠ¨ï¼š
public static Intent getExplicitIntent(Context context, Intent implicitIntent) {
        PackageManager pm = context.getPackageManager();
        List<ResolveInfo> resolveInfo = pm.queryIntentServices(implicitIntent, 0);
        if (resolveInfo == null || resolveInfo.size() != 1) {
            return null;
        }
        ResolveInfo serviceInfo = resolveInfo.get(0);
        String packageName = serviceInfo.serviceInfo.packageName;
        String className = serviceInfo.serviceInfo.name;
        ComponentName component = new ComponentName(packageName, className);
        Intent explicitIntent = new Intent(implicitIntent);
        explicitIntent.setComponent(component);
        return explicitIntent;
    }
调用方式如下åQ?/span>
Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");
Intent eintent = new Intent(getExplicitIntent(mContext,mIntent));
context.startService(eintent);



]]>
Media scan çš„ä‹É用方æ³?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2012/11/23/391795.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Fri, 23 Nov 2012 01:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2012/11/23/391795.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/391795.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2012/11/23/391795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/391795.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/391795.html</trackback:ping><description><![CDATA[<br /><div><a href="http://www.aygfsteel.com/Green-nut/articles/336256.html">http://www.aygfsteel.com/Green-nut/articles/336256.html</a></div><img src ="http://www.aygfsteel.com/liuyanbo/aggbug/391795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2012-11-23 09:12 <a href="http://www.aygfsteel.com/liuyanbo/archive/2012/11/23/391795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ListView¾U¿ç¨‹åˆäh–°å¼‚常的问é¢?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2012/09/13/387616.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Thu, 13 Sep 2012 02:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2012/09/13/387616.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/387616.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2012/09/13/387616.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/387616.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/387616.html</trackback:ping><description><![CDATA[如下错误:<br /><br /><span style="font-size:12.0pt;font-family: 宋体;">java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.</span><br /><br />可以使用如下方式解决åQ?br />ž®†notifyDataSetChanged 攑֜¨handler中,同时加上¾U¢å­—字体代码åQ?br /><br /><div><span style="color: red; ">mWifiListView.setVisibility(View.GONE);</span></div><div>mWifiListAdapter.notifyDataSetChanged();</div><div><span style="color: red; ">mWifiListView.setVisibility(View.VISIBLE);    </span></div><img src ="http://www.aygfsteel.com/liuyanbo/aggbug/387616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2012-09-13 10:12 <a href="http://www.aygfsteel.com/liuyanbo/archive/2012/09/13/387616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取Preview数据òq¶è{换成jpeg格式的方æ³?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2012/08/04/384760.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Sat, 04 Aug 2012 07:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2012/08/04/384760.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/384760.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2012/08/04/384760.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/384760.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/384760.html</trackback:ping><description><![CDATA[<div>1.startPreview之前讄¡½®PreviewCallback <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">   mCameraDevice.setPreviewCallback(mPreviewCallback);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />   mCameraDevice.startPreview();</span></div>2. 获取preview数据<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> PreviewCallback </span><span style="color: #0000ff">implements</span><span style="color: #000000"> <br /><img id="Codehighlighter1_90_510_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_510_Open_Text.style.display='none'; Codehighlighter1_90_510_Closed_Image.style.display='inline'; Codehighlighter1_90_510_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_90_510_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_90_510_Closed_Text.style.display='none'; Codehighlighter1_90_510_Open_Image.style.display='inline'; Codehighlighter1_90_510_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif">        android.hardware.Camera.PreviewCallback </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_90_510_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_90_510_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_167_507_Open_Image" onclick="this.style.display='none'; Codehighlighter1_167_507_Open_Text.style.display='none'; Codehighlighter1_167_507_Closed_Image.style.display='inline'; Codehighlighter1_167_507_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_167_507_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_167_507_Closed_Text.style.display='none'; Codehighlighter1_167_507_Open_Image.style.display='inline'; Codehighlighter1_167_507_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif">         </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> onPreviewFrame(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[] data, android.hardware.Camera camera) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_167_507_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_167_507_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                     <br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                Size size </span><span style="color: #000000">=</span><span style="color: #000000"> mParameters.getPreviewSize();<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                <br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                YuvImage yuvimage </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> YuvImage(data, ImageFormat.NV21, size.width, <br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                    size.height, </span><span style="color: #0000ff">null</span><span style="color: #000000">);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                ByteArrayOutputStream outputSteam </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ByteArrayOutputStream();<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />                yuvimage.compressToJpeg(</span><span style="color: #0000ff">new</span><span style="color: #000000"> Rect(</span><span style="color: #000000">0</span><span style="color: #000000">, </span><span style="color: #000000">0</span><span style="color: #000000">, size.width, size.height), </span><span style="color: #000000">80</span><span style="color: #000000">, outputSteam);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />            <br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />         }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />    }</span></span></div><br /></div><img src ="http://www.aygfsteel.com/liuyanbo/aggbug/384760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2012-08-04 15:15 <a href="http://www.aygfsteel.com/liuyanbo/archive/2012/08/04/384760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android中自定义Viewçš„MeasureSpec使用http://www.aygfsteel.com/liuyanbo/archive/2012/03/15/371969.html天宇恒星天宇恒星Thu, 15 Mar 2012 11:18:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2012/03/15/371969.htmlhttp://www.aygfsteel.com/liuyanbo/comments/371969.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2012/03/15/371969.html#Feedback2http://www.aygfsteel.com/liuyanbo/comments/commentRss/371969.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/371969.html有时åQŒAndroid¾pȝ»ŸæŽ§äšg无法满èƒö我们的需求,因此有必要自定义View。具体方法参见官方开发文档:http://developer.android.com/guide/topics/ui/custom-components.html


一般来è¯ß_¼Œè‡ªå®šä¹‰æŽ§ä»‰™ƒ½ä¼šåŽ»é‡å†™Viewçš„onMeasureæ–ÒŽ(gu¨©)³•åQŒå› ä¸ø™¯¥æ–ÒŽ(gu¨©)³•指定该控件在屏幕上的大小ã€?/p>

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

onMeasure传入的两个参数是ç”׃¸Šä¸€å±‚控件传入的大小åQŒæœ‰å¤šç§æƒ…况åQŒé‡å†™è¯¥æ–ÒŽ(gu¨©)³•æ—‰™œ€è¦å¯¹è®¡ç®—控äšg的实际大ž®ï¼Œç„¶åŽè°ƒç”¨setMeasuredDimension(int, int)讄¡½®å®žé™…大小ã€?/p>


onMeasure传入的widthMeasureSpecå’ŒheightMeasureSpec不是一般的ž®ºå¯¸æ•°å€û|¼Œè€Œæ˜¯ž®†æ¨¡å¼å’Œž®ºå¯¸¾l„合在一èµïLš„æ•°å€¹{€‚我们需要通过int mode = MeasureSpec.getMode(widthMeasureSpec)得到模式åQŒç”¨int size = MeasureSpec.getSize(widthMeasureSpec)得到ž®ºå¯¸ã€?/span>


mode共有三种情况åQŒå–å€¼åˆ†åˆ«äØ“MeasureSpec.UNSPECIFIED, MeasureSpec.EXACTLY, MeasureSpec.AT_MOSTã€?/span>


MeasureSpec.EXACTLY是精¼‹®å°ºå¯¸ï¼Œå½“我们将控äšgçš„layout_width或layout_height指定为具体数值时如andorid:layout_width="50dip"åQŒæˆ–è€…äØ“FILL_PARENT是,都是控äšg大小已经¼‹®å®šçš„æƒ…况,都是¾_„¡¡®ž®ºå¯¸ã€?/span>


MeasureSpec.AT_MOST是最大尺寸,当控件的layout_width或layout_height指定为WRAP_CONTENTæ—Óž¼ŒæŽ§äšg大小一般随着控äšg的子½Iºé—´æˆ–内容进行变化,此时控äšgž®ºå¯¸åªè¦ä¸è¶…˜q‡çˆ¶æŽ§äšg允许的最大尺寸即可。因此,此时的mode是AT_MOSTåQŒsize¾l™å‡ºäº†çˆ¶æŽ§äšg允许的最大尺寸ã€?/p>


MeasureSpec.UNSPECIFIED是未指定ž®ºå¯¸åQŒè¿™¿Uæƒ…况不多,一般都是父控äšg是AdapterViewåQŒé€šè¿‡measureæ–ÒŽ(gu¨©)³•传入的模式ã€?/p>


å› æ­¤åQŒåœ¨é‡å†™onMeasureæ–ÒŽ(gu¨©)³•时要æ ÒŽ(gu¨©)®æ¨¡å¼ä¸åŒ˜q›è¡Œž®ºå¯¸è®¡ç®—。下面代码就是一¿Uæ¯”较典型的方式åQ?br />

@Override    
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    
    setMeasuredDimension(getMeasuredLength(widthMeasureSpec, true), getMeasuredLength(heightMeasureSpec, false));    
}    
    
    
private int getMeasuredLength(int length, boolean isWidth) {    
    int specMode = MeasureSpec.getMode(length);    
    int specSize = MeasureSpec.getSize(length);    
    int size;    
    int padding = isWidth ? getPaddingLeft() + getPaddingRight()    
            : getPaddingTop() + getPaddingBottom();    
    if (specMode == MeasureSpec.EXACTLY) {    
        size = specSize;    
    } else {    
        size = isWidth ? padding + mWave.length / 4 : DEFAULT_HEIGHT    
                + padding;    
        if (specMode == MeasureSpec.AT_MOST) {    
            size = Math.min(size, specSize);    
        }    
    }    
    return size;    
}  



]]>
android 获取和设¾|®å±òq•亮åº?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2012/03/13/371799.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Tue, 13 Mar 2012 06:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2012/03/13/371799.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/371799.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2012/03/13/371799.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/371799.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/371799.html</trackback:ping><description><![CDATA[<p style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; "><strong># 获取屏幕亮度</strong></p><div style="font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; "><pre style="line-height: 20px; margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New'; "><span style="line-height: 1.5; color: #0000ff; ">public</span> <span style="line-height: 1.5; color: #0000ff; ">static</span> <span style="line-height: 1.5; color: #0000ff; ">int</span> getScreenBrightness(Activity activity) {<br /> <span style="line-height: 1.5; color: #0000ff; ">int</span> value = 0;<br /> ContentResolver cr = activity.getContentResolver();<br /> <span style="line-height: 1.5; color: #0000ff; ">try</span> {<br /> value = Settings.System.getInt(cr, Settings.System.SCREEN_BRIGHTNESS);<br /> } <span style="line-height: 1.5; color: #0000ff; ">catch</span> (SettingNotFoundException e) {<br /> <br /> }<br /> <span style="line-height: 1.5; color: #0000ff; ">return</span> value;<br />}</pre><div style="margin-top: 5px; "><span style="line-height: 18px;"><br /></span></div></div><p style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; "><strong># 讄¡½®å±å¹•亮度</strong></p><div style="font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; "><pre style="line-height: 20px; margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New'; "><span style="line-height: 1.5; color: #0000ff; ">public</span> <span style="line-height: 1.5; color: #0000ff; ">static</span> <span style="line-height: 1.5; color: #0000ff; ">void</span> setScreenBrightness(Activity activity, <span style="line-height: 1.5; color: #0000ff; ">int</span> value) {<br /> WindowManager.LayoutParams params = activity.getWindow().getAttributes();<br /> params.screenBrightness = value / 255f;<br /> activity.getWindow().setAttributes(params);<br />}</pre><div style="margin-top: 5px; "><span style="line-height: 18px;"><br /></span></div></div><img src ="http://www.aygfsteel.com/liuyanbo/aggbug/371799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2012-03-13 14:49 <a href="http://www.aygfsteel.com/liuyanbo/archive/2012/03/13/371799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入理解Android消息处理¾pȝ»Ÿâ€”—Looper、Handler、Threadhttp://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359074.html天宇恒星天宇恒星Tue, 20 Sep 2011 06:56:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359074.htmlhttp://www.aygfsteel.com/liuyanbo/comments/359074.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359074.html#Feedback0http://www.aygfsteel.com/liuyanbo/comments/commentRss/359074.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/359074.html
熟æ?zh¨¨n)‰Windows¾~–程的朋友可能知道Windows½E‹åºæ˜¯æ¶ˆæ¯é©±åŠ¨çš„åQŒåƈ且有全局的消息åó@环系¾lŸã€‚而Android应用½E‹åºä¹Ÿæ˜¯æ¶ˆæ¯é©±åŠ¨çš„ï¼ŒæŒ‰é“ç†æ¥è¯´ä¹Ÿåº”è¯¥æä¾›æ¶ˆæ¯å¾ªçŽ¯æœºåˆ¶ã€‚å®žé™…ä¸Šè°äh­Œå‚考了Windows的消息åó@环机åˆÓž¼Œä¹Ÿåœ¨Android¾pȝ»Ÿä¸­å®žçŽîCº†æ¶ˆæ¯å¾ªçŽ¯æœºåˆ¶ã€‚Android通过Looper、Handler来实现消息åó@环机åˆÓž¼ŒAndroid消息循环是针对线½E‹çš„åQˆæ¯ä¸ªçº¿½E‹éƒ½å¯ä»¥æœ‰è‡ªå·Þqš„æ¶ˆæ¯é˜Ÿåˆ—和消息åó@环)。本文深入介¾lä¸€ä¸‹Android消息处理¾pȝ»ŸåŽŸç†ã€?/span>

    Android¾pȝ»Ÿä¸­Looperè´Ÿè´£½Ž¡ç†¾U¿ç¨‹çš„æ¶ˆæ¯é˜Ÿåˆ—和消息循环åQŒå…·ä½“实现请参考Looper的源码ã€?可以通过Loop.myLooper()得到当前¾U¿ç¨‹çš„Looper对象åQŒé€šè¿‡Loop.getMainLooper()可以获得当前˜q›ç¨‹çš„主¾U¿ç¨‹çš„Looper对象ã€?/font>

    前面提到Android¾pȝ»Ÿçš„æ¶ˆæ¯é˜Ÿåˆ—和消息循环都是针对具体¾U¿ç¨‹çš„,一个线½E‹å¯ä»¥å­˜åœ¨ï¼ˆå½“然也可以不存在åQ‰ä¸€ä¸ªæ¶ˆæ¯é˜Ÿåˆ—和一个消息åó@环(LooperåQ‰ï¼Œç‰¹å®š¾U¿ç¨‹çš„æ¶ˆæ¯åªèƒ½åˆ†å‘给本线½E‹ï¼Œä¸èƒ½˜q›è¡Œè·¨çº¿½E‹ï¼Œè·¨è¿›½E‹é€šè®¯ã€‚但是创建的工作¾U¿ç¨‹é»˜è®¤æ˜¯æ²¡æœ‰æ¶ˆæ¯åó@环和消息队列的,如果惌™®©è¯¥çº¿½E‹å…·æœ‰æ¶ˆæ¯é˜Ÿåˆ—和消息循环åQŒéœ€è¦åœ¨¾U¿ç¨‹ä¸­é¦–先调用Looper.prepare()来创建消息队列,然后调用Looper.loop()˜q›å…¥æ¶ˆæ¯å¾ªçŽ¯ã€‚å¦‚ä¸‹ä¾‹æ‰€½Cºï¼š

  class LooperThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }

˜q™æ ·ä½ çš„¾U¿ç¨‹ž®±å…·æœ‰äº†æ¶ˆæ¯å¤„理机制了,在Handler中进行消息处理ã€?/font>

     Activity是一个UI¾U¿ç¨‹åQŒè¿è¡ŒäºŽä¸Èº¿½E‹ä¸­åQŒAndroid¾pȝ»Ÿåœ¨å¯åŠ¨çš„æ—¶å€™ä¼šä¸ºActivity创徏一个消息队列和消息循环åQˆLooperåQ‰ã€‚详¾l†å®žçŽ°è¯·å‚è€ƒActivityThread.javaæ–‡äšgã€?/font>

     Handler的作用是把消息加入特定的åQˆLooperåQ‰æ¶ˆæ¯é˜Ÿåˆ—中åQŒåƈ分发和处理该消息队列中的消息。构造Handler的时候可以指定一个Looper对象åQŒå¦‚果不指定则利用当前线½E‹çš„Looper创徏。详¾l†å®žçŽ°è¯·å‚è€ƒLooper的源码ã€?/font>

     Activity、Looper、Handler的关¾pÕd¦‚下图所½Cºï¼š

     一个Activity中可以创建多个工作线½E‹æˆ–者其他的¾l„äšgåQŒå¦‚果这些线½E‹æˆ–者组件把他们的消息放入Activity的主¾U¿ç¨‹æ¶ˆæ¯é˜Ÿåˆ—åQŒé‚£ä¹ˆè¯¥æ¶ˆæ¯ž®×ƒ¼šåœ¨ä¸»¾U¿ç¨‹ä¸­å¤„理了。因ä¸ÞZ¸»¾U¿ç¨‹ä¸€èˆ¬è´Ÿè´£ç•Œé¢çš„æ›´æ–°æ“ä½œåQŒåƈ且Android¾pȝ»Ÿä¸­çš„weget不是¾U¿ç¨‹å®‰å…¨çš„,所以这¿Uæ–¹å¼å¯ä»¥å¾ˆå¥½çš„实现Android界面更新。在Android¾pȝ»Ÿä¸­è¿™¿Uæ–¹å¼æœ‰ç€òq¿æ³›çš„运用ã€?/font>

     那么另外一个线½E‹æ€Žæ ·æŠŠæ¶ˆæ¯æ”¾å…¥ä¸»¾U¿ç¨‹çš„æ¶ˆæ¯é˜Ÿåˆ—å‘¢åQŸç­”案是通过Handle对象åQŒåªè¦Handler对象以主¾U¿ç¨‹çš„Looper创徏åQŒé‚£ä¹ˆè°ƒç”¨Handlerçš„sendMessage½{‰æŽ¥å£ï¼Œž®†ä¼šæŠŠæ¶ˆæ¯æ”¾å…¥é˜Ÿåˆ—都ž®†æ˜¯æ”‘Ö…¥ä¸Èº¿½E‹çš„æ¶ˆæ¯é˜Ÿåˆ—ã€‚åÆˆä¸”å°†ä¼šåœ¨Handlerä¸Èº¿½E‹ä¸­è°ƒç”¨è¯¥handlerçš„handleMessage接口来处理消息ã€?/font>

     ˜q™é‡Œé¢æ¶‰åŠåˆ°¾U¿ç¨‹åŒæ­¥é—®é¢˜åQŒè¯·å…ˆå‚考如下例子来理解Handler对象的线½E‹æ¨¡åž‹ï¼š

1、首先创建MyHandler工程�/font>

2、在MyHandler.java中加入如下的代码åQ?/font>

package com.simon;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.os.Handler;

public class MyHandler extends Activity {
	static final String TAG = "Handler";
	Handler h = new Handler(){
    	public void handleMessage (Message msg)
    	{
    		switch(msg.what)
    		{
    		case HANDLER_TEST:
    			Log.d(TAG, "The handler thread id = " + Thread.currentThread().getId() + "\n");
    			break;
    		}
    	}
    };

	static final int HANDLER_TEST = 1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "The main thread id = " + Thread.currentThread().getId() + "\n");

        new myThread().start();
        setContentView(R.layout.main);
    }

    class myThread extends Thread
    {
    	public void run()
    	{
    		Message msg = new Message();
    		msg.what = HANDLER_TEST;
    		h.sendMessage(msg);
    		Log.d(TAG, "The worker thread id = " + Thread.currentThread().getId() + "\n");
    	}
    }
}

在这个例子中我们主要是打华ͼŒ˜q™ç§å¤„理机制各个模块的所处的¾U¿ç¨‹æƒ…况。如下是我的机器˜qè¡Œ¾l“æžœåQ?/font>

09-10 23:40:51.478: DEBUG/Handler(302): The main thread id = 1
09-10 23:40:51.569: DEBUG/Handler(302): The worker thread id = 8
09-10 23:40:52.128: DEBUG/Handler(302): The handler thread id = 1

我们可以看出消息处理是在ä¸Èº¿½E‹ä¸­å¤„理的,在消息处理函æ•îC¸­å¯ä»¥å®‰å…¨çš„调用主¾U¿ç¨‹ä¸­çš„ä»ÖM½•资源åQŒåŒ…括刷新界面。工作线½E‹å’Œä¸Èº¿½E‹è¿è¡Œåœ¨ä¸åŒçš„线½E‹ä¸­åQŒæ‰€ä»¥å¿…™å»è¦æ³¨æ„˜q™ä¸¤ä¸ªçº¿½E‹é—´çš„竞争关¾p…R€?/font>

     上例中,你可能注意到在工作线½E‹ä¸­è®‰K—®äº†ä¸»¾U¿ç¨‹handler对象åQŒåƈ在调用handler的对象向消息队列加入了一个消息。这个过½E‹ä¸­ä¼šä¸ä¼šå‡ºçŽ°æ¶ˆæ¯é˜Ÿåˆ—æ•°æ®ä¸ä¸€è‡´é—®é¢˜å‘¢åQŸç­”案是handlerå¯¹è±¡ä¸ä¼šå‡ºé—®é¢˜ï¼Œå› äØ“handler对象½Ž¡ç†çš„Looper对象是线½E‹å®‰å…¨çš„åQŒä¸½Ž¡æ˜¯åŠ å…¥æ¶ˆæ¯åˆ°æ¶ˆæ¯é˜Ÿåˆ—å’Œä»Žé˜Ÿåˆ—è¯»å‡ºæ¶ˆæ¯éƒ½æ˜¯æœ‰åŒæ­¥å¯¹è±¡ä¿æŠ¤çš„ï¼Œå…·ä½“è¯·å‚è€ƒLooper.javaæ–‡äšg。上例中没有修改handler对象åQŒæ‰€ä»¥handler对象不可能会出现数据不一致的问题ã€?/font>

     通过上面的分析,我们可以得出如下¾l“论åQ?/font>

1、如果通过工作¾U¿ç¨‹åˆäh–°ç•Œé¢åQŒæŽ¨èä‹É用handler对象来实现ã€?/font>

2、注意工作线½E‹å’Œä¸Èº¿½E‹ä¹‹é—´çš„竞争关系。推荐handler对象在主¾U¿ç¨‹ä¸­æž„造完成(òq¶ä¸”启动工作¾U¿ç¨‹ä¹‹åŽä¸è¦å†ä¿®æ”¹ä¹‹åQŒå¦åˆ™ä¼šå‡ºçŽ°æ•°æ®ä¸ä¸€è‡ß_¼‰åQŒç„¶åŽåœ¨å·¥ä½œ¾U¿ç¨‹ä¸­å¯ä»¥æ”¾å¿ƒçš„调用发送消息SendMessage½{‰æŽ¥å£ã€?/font>

3、除äº?所˜q°çš„hanlder对象之外的ä“Q何主¾U¿ç¨‹çš„æˆå‘˜å˜é‡å¦‚果在工作¾U¿ç¨‹ä¸­è°ƒç”¨ï¼Œä»”细考虑¾U¿ç¨‹åŒæ­¥é—®é¢˜ã€‚如果有必要需要加入同步对象保护该变量ã€?/font>

4、handler对象的handleMessage接口ž®†ä¼šåœ¨ä¸»¾U¿ç¨‹ä¸­è°ƒç”¨ã€‚在˜q™ä¸ªå‡½æ•°å¯ä»¥æ”‘Ö¿ƒçš„调用主¾U¿ç¨‹ä¸­ä“Q何变量和函数åQŒè¿›è€Œå®Œæˆæ›´æ–°UIçš„ä“Q务ã€?/font>

5、Android很多API也利用Handler˜q™ç§¾U¿ç¨‹ç‰ÒŽ(gu¨©)€§ï¼Œä½œäؓ一¿Uå›žè°ƒå‡½æ•°çš„变种åQŒæ¥é€šçŸ¥è°ƒç”¨è€…。这样Android框架ž®±å¯ä»¥åœ¨å…¶çº¿½E‹ä¸­ž®†æ¶ˆæ¯å‘送到调用者的¾U¿ç¨‹æ¶ˆæ¯é˜Ÿåˆ—之中åQŒä¸ç”¨æ‹…心线½E‹åŒæ­¥çš„问题ã€?/font>

     深入理解Android消息处理机制对于应用½E‹åºå¼€å‘非帔R‡è¦ï¼Œä¹Ÿå¯ä»¥è®©ä½ å¯¹¾U¿ç¨‹åŒæ­¥æœ‰æ›´åŠ æ·±åˆÈš„认识。以上是最˜q‘Simon学习Android消息处理机制的一点儿æ€È»“åQŒå¦‚有错误之处请不吝指教ã€?/font>



]]>
¾~–译带有½W¬ä¸‰æ–¹jar包的apåQŒå¦‚何才能过用mmm¾~–译成功http://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359072.html天宇恒星天宇恒星Tue, 20 Sep 2011 06:49:00 GMThttp://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359072.htmlhttp://www.aygfsteel.com/liuyanbo/comments/359072.htmlhttp://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359072.html#Feedback1http://www.aygfsteel.com/liuyanbo/comments/commentRss/359072.htmlhttp://www.aygfsteel.com/liuyanbo/services/trackbacks/359072.html具体代码如下åQ?br />
LOCAL_PATH := $(call my-dir)  
include $(CLEAR_VARS)  
LOCAL_STATIC_JAVA_LIBRARIES :
= libarity  
LOCAL_SRC_FILES :
= $(call all-java-files-under, src)  
LOCAL_PACKAGE_NAME :
= TestJar  
include $(BUILD_PACKAGE)  
##################################################  
include $(CLEAR_VARS)  
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :
= libarity:lily.jar  
include $(BUILD_MULTI_PREBUILT)  
# Use the folloing include to make our test apk.  
include $(call all
-makefiles-under,$(LOCAL_PATH))  


关键在于LOCAL_STATIC_JAVA_LIBRARIES := libarity和LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:lily.jar

其实libarityæ˜¯ä¸ªåå­—å¯ä»¥éšä¾¿å–ï¼Œä½†æ˜¯ä¸¤ä¸ªå±žæ€§çš„å€ÆD¦ä¸€æ ·å°±å¥½äº†åQŒä½†æ˜¯åŽé¢é‚£ä¸ªå†’号里面就一定要写你的jar包名åQŒä½ çš„jar包一定放在工½E‹çš„æ ¹ç›®å½•就好了åQŒç›®å½•结构如下:

-res

-src

-com

-ianc

-testjar

TestJar.java

android.mk

AndroidManifest.xml

default.properties

lily.jar




]]>
善用Android预定义样å¼?/title><link>http://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359071.html</link><dc:creator>天宇恒星</dc:creator><author>天宇恒星</author><pubDate>Tue, 20 Sep 2011 06:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359071.html</guid><wfw:comment>http://www.aygfsteel.com/liuyanbo/comments/359071.html</wfw:comment><comments>http://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuyanbo/comments/commentRss/359071.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuyanbo/services/trackbacks/359071.html</trackback:ping><description><![CDATA[<span id="wmqeeuq" class="Apple-style-span" style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; background-color: #ffffff; "><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">字体大小</h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">对于能够昄¡¤ºæ–‡å­—的控ä»Óž¼ˆå¦‚TextView EditText RadioButton Button CheckBox Chronometer½{‰ç­‰åQ‰ï¼Œä½ æœ‰æ—‰™œ€è¦æŽ§åˆ¶å­—体的大小。Androidòq›_°å®šä¹‰äº†ä¸‰¿Uå­—体大ž®ã€?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">"?android:attr/textAppearanceLarge"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">"?android:attr/textAppearanceMedium"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">"?android:attr/textAppearanceSmall"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">使用æ–ÒŽ(gu¨©)³•为:</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">android:textAppearance="?android:attr/textAppearanceLarge" <br />android:textAppearance="?android:attr/textAppearanceMedium" <br />android:textAppearance="?android:attr/textAppearanceSmall"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">æˆ?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style="?android:attr/textAppearanceLarge" <br />style="?android:attr/textAppearanceMedium" <br />style="?android:attr/textAppearanceSmall"</p><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">字体颜色</h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">android:textColor="?android:attr/textColorPrimary" <br />android:textColor="?android:attr/textColorSecondary" <br />android:textColor="?android:attr/textColorTertiary" <br />android:textColor="?android:attr/textColorPrimaryInverse" <br />android:textColor="?android:attr/textColorSecondaryInverse"</p><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">ProgressBar</h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style="?android:attr/progressBarStyleHorizontal" <br />style="?android:attr/progressBarStyleLarge" <br />style="?android:attr/progressBarStyleSmall" <br />style="?android:attr/progressBarStyleSmallTitle"</p><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">分隔½W?/h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">横向åQ?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><View android:layout_width="fill_parent" <br />      android:layout_height="1dip" <br />      android:background="?android:attr/listDivider" /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">¾Uµå‘åQ?/p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><View android:layout_width="1dip" <br />      android:layout_height="fill_parent" <br />      android:background="?android:attr/listDivider" /></p><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">CheckBox</h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style="?android:attr/starStyle"</p><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">¾cÖM¼¼æ ‡é¢˜æ æ•ˆæžœçš„TextView</h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style="?android:attr/listSeparatorTextViewStyle"</p><h1 style="font-size: 2em; line-height: 1.5em; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; ">其它有用的样å¼?/h1><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">android:layout_height="?android:attr/listPreferredItemHeight"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">android:paddingRight="?android:attr/scrollbarSize"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style="?android:attr/windowTitleBackgroundStyle"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">style="?android:attr/windowTitleStyle"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">android:layout_height="?android:attr/windowTitleSize"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">android:background="?android:attr/windowBackground"</p></span><img src ="http://www.aygfsteel.com/liuyanbo/aggbug/359071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuyanbo/" target="_blank">天宇恒星</a> 2011-09-20 14:45 <a href="http://www.aygfsteel.com/liuyanbo/archive/2011/09/20/359071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">Î÷ÄþÊÐ</a>| <a href="http://" target="_blank">ÁéÊ¯ÏØ</a>| <a href="http://" target="_blank">¹þ¶û±õÊÐ</a>| <a href="http://" target="_blank">´óÃûÏØ</a>| <a href="http://" target="_blank">ÉÏÀõÏØ</a>| <a href="http://" target="_blank">µÂ»¯ÏØ</a>| <a href="http://" target="_blank">ͬÈÊÏØ</a>| <a href="http://" target="_blank">ÔúÂ³ÌØÆì</a>| <a href="http://" target="_blank">°²ÁúÏØ</a>| <a href="http://" target="_blank">ºÚÉ½ÏØ</a>| <a href="http://" target="_blank">°²Ô¶ÏØ</a>| <a href="http://" target="_blank">ÓªÉ½ÏØ</a>| <a href="http://" target="_blank">»ªÄþÏØ</a>| <a href="http://" target="_blank">ÁÖÖÜÏØ</a>| <a href="http://" target="_blank">¼Ð½­ÏØ</a>| <a href="http://" target="_blank">±öÑôÏØ</a>| <a href="http://" target="_blank">̨ÍåÊ¡</a>| <a href="http://" target="_blank">кÓÏØ</a>| <a href="http://" target="_blank">аͶû»¢ÓÒÆì</a>| <a href="http://" target="_blank">À¼Æº</a>| <a href="http://" target="_blank">ÔÀÆÕºþÏØ</a>| <a href="http://" target="_blank">äü¹ØÏØ</a>| <a href="http://" target="_blank">·ïÇìÏØ</a>| <a href="http://" target="_blank">´ó·áÊÐ</a>| <a href="http://" target="_blank">аͶû»¢ÓÒÆì</a>| <a href="http://" target="_blank">¹ÌÊ¼ÏØ</a>| <a href="http://" target="_blank">¸·³ÇÏØ</a>| <a href="http://" target="_blank">ºØÀ¼ÏØ</a>| <a href="http://" target="_blank">ÒÇÂ¤ÏØ</a>| <a href="http://" target="_blank">Ëà±±</a>| <a href="http://" target="_blank">ÑôÎ÷ÏØ</a>| <a href="http://" target="_blank">·¿²ú</a>| <a href="http://" target="_blank">ÐÞÎÄÏØ</a>| <a href="http://" target="_blank">ÈýÃÅÏØ</a>| <a href="http://" target="_blank">Á¬ÖÝÊÐ</a>| <a href="http://" target="_blank">ÄÏÆ¤ÏØ</a>| <a href="http://" target="_blank">¹ãµÂÏØ</a>| <a href="http://" target="_blank">»áÍ¬ÏØ</a>| <a href="http://" target="_blank">ÍÁÄ¬ÌØ×óÆì</a>| <a href="http://" target="_blank">ÏæÌ¶ÊÐ</a>| <a href="http://" target="_blank">»¨Á«ÊÐ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>