- 浏览: 88689 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (78)
- 生活 (3)
- 云计算与虚拟化 (26)
- IT技术 (13)
- VDI (7)
- WEB 2.0 (3)
- social network (1)
- API (1)
- java (1)
- tools (1)
- javascript (3)
- framework (1)
- web (1)
- virtualization (3)
- hypervisor (1)
- linux (6)
- kvm (1)
- VDI,vmware (2)
- wine (1)
- android (4)
- NoSQL (1)
- version control (1)
- (1)
- xendesktop (1)
- citrix (1)
- mobile (2)
- ebook (1)
- GUI (2)
- C# (1)
- google map (1)
- 围棋 (1)
- coding (1)
- programming (1)
最新评论
1.检查是否有网络连接
Java代码
1. public static boolean isNetworkAvailable(Context context) {
2. ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
3. Context.CONNECTIVITY_SERVICE);
4. NetworkInfo info = cm.getActiveNetworkInfo();
5. return (info != null && info.isConnected());
6. }
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return (info != null && info.isConnected());
}
2.全屏和无标题
Java代码
1. // 全屏 ( No Statusbar )
2. getWindow (). setFlags ( WindowManager . LayoutParams . FLAG _ FULLSCREEN ,
3. WindowManager . LayoutParams . FLAG _ FULLSCREEN );
4. // 无标题栏 ( No Titlebar )
5. requestWindowFeature ( Window . FEATURE _ NO _ TITLE );
// 全屏 ( No Statusbar )
getWindow (). setFlags ( WindowManager . LayoutParams . FLAG _ FULLSCREEN ,
WindowManager . LayoutParams . FLAG _ FULLSCREEN );
// 无标题栏 ( No Titlebar )
requestWindowFeature ( Window . FEATURE _ NO _ TITLE );
3.使用ViewStub延迟展开视图
Java代码
1. 1 ) 定义 ViewStub
2. < ViewStub android : id = "@+ id / stub _ import "
3. android : inflatedId ="@+ id / panel _ import "
4. android : layout ="@ layout / progress _ overlay "
5. android : layout _ width =" fill _ parent "
6. android:layout_height="wrap_content"
7. android:layout_gravity="bottom"/>
8. 2 )展开视图
9. findViewById(R.id.stub_import).setVisibility(View.VISIBLE);
10. // 或者 获取视图
11. View importPanel = ((ViewStub)
12. findViewById(R.id.stub_import)).inflate();
1 ) 定义 ViewStub
< ViewStub android : id = "@+ id / stub _ import "
android : inflatedId ="@+ id / panel _ import "
android : layout ="@ layout / progress _ overlay "
android : layout _ width =" fill _ parent "
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
2 )展开视图
findViewById(R.id.stub_import).setVisibility(View.VISIBLE);
// 或者 获取视图
View importPanel = ((ViewStub)
findViewById(R.id.stub_import)).inflate();
4.删除窗口背景
1) 编码实现
Java代码
1. public void onCreate(Bundle icicle){
2. super.onCreate(icicle);
3. setContentView(R.layout.mainview);
4. // 删除窗口背景
5. getWindow().setBackgroundDrawable(null);
6. ...
7. }
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.mainview);
// 删除窗口背景
getWindow().setBackgroundDrawable(null);
...
}
2 )自定义主题实现
Java代码
1. < resources>
2. < mce:style name="NoBackgroundTheme" parent="android:Theme">< !--
3. < item name="android:windowBackground">@null< /item>
4. -->< /mce:style>< style name="NoBackgroundTheme" parent="android:Theme" mce_bogus="1">< item name="android:windowBackground">@null< /item>< /style>
5. < /resources>
< resources>
< mce:style name="NoBackgroundTheme" parent="android:Theme">< !--
< item name="android:windowBackground">@null< /item>
-->< /mce:style>< style name="NoBackgroundTheme" parent="android:Theme" mce_bogus="1">< item name="android:windowBackground">@null< /item>< /style>
< /resources>
6.横竖屏切换时不重新加载 onCreate()
为了防止横竖屏切换时 Activity 重新加载 onCreate ,
只需要在 Activity 的配置文件里添加属性:
android:configChanges="orientation|keyboardHidden|navigation"
7.半透明主题
1.Resource source file location : res/values/styles.xml
< style name="myTranslucentTheme" parent="android:style/Theme.Translucent">
< item name="android:windowBackground">@drawable/bg< /item>
< /style>
其中 bg 为一张半透明图片的索引
2. 使用自定义半透明主题
AndroidManifest.xml
Java代码
1. < activity android:name=".WallpaperActivity"
2. android:label="@string/wallpaper_titile"
3. android:theme="@style/myTranslucentTheme">
4. < /activity>
< activity android:name=".WallpaperActivity"
android:label="@string/wallpaper_titile"
android:theme="@style/myTranslucentTheme">
< /activity>
8.获取Android手机上的图片和视频缩略图
大家都知道Android从1.5开始刚插入SD卡时系统会调用MediaScanner服务进行后台扫描,索引新的歌曲、图片和视频等信息,如果我们需要快速提取图片和视频缩略图可以直接访问 android.provider.MediaStore.Images.Thumbnails 和android.provider.MediaStore.Video.Thumbnails这两个数据库,即可查询出来缩略图
如何判断文件呢? 可以通过Cursor遍历数据库,对比INTERNAL_CONTENT_URI字段的值,这是一个Uri我们可以转成String,这里保存着Android手机SD卡上的多媒体文件完整路径,
有关具体的缩略图可以通过getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options) 或getThumbnail(ContentResolver cr, long origId, long groupId, int kind, BitmapFactory.Options options) 方法获取,这两种方法返回Bitmap类型,而缩略图的分辨率可以从HEIGHT和WIDTH两个字段提取,在Android上缩略图分为两种,通过读取 KIND字段来获得,分别为MICRO_KIND和MINI_KIND 分别为微型和迷你两种缩略模式,前者的分辨率更低。这样我们平时获取文件系统的某个图片预览时,可以直接调用系统缩略图,而不用自己重新计算。
最后Android123提示大家,缩略图保存在SD卡的DCIM目录,里面的.thumbnails是图片的,而.video_thumbnails是视频的,这两个文件夹为隐藏属性,一般的文件管理器都可以看到。
9.Android ANR介绍与避免
很多初入Android开发的网友可能发现ANR的字样,到底Android ANR是什么呢? 其实ANR就是Application Not Responding的全称,当某个应用处于长期假死状态时Android系统会弹出一个窗口上面写道,XXX is not responding给出两个按钮一个为force close一个为wait。
可能触发ANR的情况
1. 长时间的I/O处理,比如读写大文件,网络访问时造成的阻塞。
2. 执行耗时的运算,Android默认为超过5000ms即5秒开始弹出ANR窗口,某些应用可能首次执行时没有缓存十分耗时,可以通过Splash播放闪屏Logo等方式来延缓加载
3. Service和appWidget中也要注意多线程的使用,除非它和Activity工作在不同的进程。
避免ANR的方法
1. 单独开工作者线程,通过独立的Thread或使用类似AsyncTask的方式来处理耗时的内容。
2. 耗时的操作尽量分段处理,使用类似状态机的方法,类似Symbian的活动对象将一个复杂的事情,分段执行。
3. UI线程中不要处理过多的内容,比如将一个5MB的文本,让TextView去setText,要知道这种UI操作,没有什么好方法去解决的,所以Android123提示,遇到UI中需要执行复杂的操作,可以参考上面2提到的分段处理方式。
10.AsyncTask对比Thread加Handler
很多网友可能发现Android平台很多应用使用的都是AsyncTask,而并非Thread和Handler去更新UI,这里 Android123给大家说下他们到底有什么区别,我们平时应该使用哪种解决方案。从Android 1.5开始系统将AsyncTask引入到android.os包中,过去在很早1.1和1.0 SDK时其实官方将其命名为UserTask,其内部是JDK 1.5开始新增的concurrent库,做过J2EE的网友可能明白并发库效率和强大性,比Java原始的Thread更灵活和强大,但对于轻量级的使 用更为占用系统资源。Thread是Java早期为实现多线程而设计的,比较简单不支持concurrent中很多特性在同步和线程池类中需要自己去实现 很多的东西,对于分布式应用来说更需要自己写调度代码,而为了Android UI的刷新Google引入了Handler和Looper机制,它们均基于消息实现,有事可能消息队列阻塞或其他原因无法准确的使用。
Android开发网推荐大家使用AsyncTask代替Thread+Handler的方式,不仅调用上更为简单,经过实测更可靠一 些,Google在 Browser中大量使用了异步任务作为处理耗时的I/O操作,比如下载文件、读写数据库等等,它们在本质上都离不开消息,但是AsyncTask相比 Thread加Handler更为可靠,更易于维护,但AsyncTask缺点也是有的比如一旦线程开启即dobackground方法执行后无法给线程 发送消息,仅能通过预先设置好的标记来控制逻辑,当然可以通过线程的挂起等待标志位的改变来通讯,对于某些应用Thread和Handler以及 Looper可能更灵活。
11.android.os.Debug调试工具使用方法
在Android软件开发中最终的性能测试和调试显得至观重要,今天Android123和大家一起讨论下Google送给我们的android.os.Debug类,使用起来比较简单,我们先导入 import android.os.Debug这个包。
在需要开始跟踪的地方加入 Debug.startMethodTracing(“/sdcard/cwj”);
最终在停止调试的地方加入 Debug.stopMethodTracing();
最终在sdcard上生成的cwj文件我们可以用sdk ools中的traceview来查看运行的结果。
12.TextView多行本文滚动轻松实现
Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局。只要在layout中简单设置几个属性就可以轻松实现
Java代码
1. < TextView
2. android:id="@+id/tvCWJ"
3. android:layout_width="fill_parent"
4. android:layout_height="wrap_content"
5. android:scrollbars="vertical" < !--垂直滚动条 -->
6. android:singleLine="false" < !--实现多行 -->
7. android:maxLines="15" < !--最多不超过15行 -->
8. android:textColor="#FF0000"
9. />
< TextView
android:id="@+id/tvCWJ"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" < !--垂直滚动条 -->
android:singleLine="false" < !--实现多行 -->
android:maxLines="15" < !--最多不超过15行 -->
android:textColor="#FF0000"
/>
当然我们为了让TextView动起来,还需要用到TextView的setMovementMethod方法设置一个滚动实例,代码如下
Java代码
1. TextView tvAndroid123 = (TextView)findViewById(R.id.tvCWJ);
2. tvAndroid123.setMovementMethod(ScrollingMovementMethod.getInstance()); // Android开发网提示相关的可以查看SDK中android.text.method分支了解更多
TextView tvAndroid123 = (TextView)findViewById(R.id.tvCWJ);
tvAndroid123.setMovementMethod(ScrollingMovementMethod.getInstance()); // Android开发网提示相关的可以查看SDK中android.text.method分支了解更多
12.Widget简单制作流程
1、在 OnUpdate()中 定义一个 Intent
Intent startActivityIntent = new Intent(context,WidgetLife.class);
2、实例化一个 PendingIntent
PendingIntent Pintent = PendingIntent.getActivity(context,0,startActivityIntent,0);
3、实例RemoteView
RemoteViews ActivityView = new RemoteViews(context.getPackageName(),R.layout.widget_layout);
4、Button 事件
ActivityView.setOnClickPendingIntent(R.id.Button,Pintent);
5、更新Widget
appWidgetManager.updateAppWidget(appWidgetIds,ActivityView);
12.对话框【Dialog】去除白色边框代码
边框, Dialog, Android, 对话框, 代码
使用样式文件,在values 目录下新建styles.xml文件,编写如下代码:
Java代码
1. < resources>
2. < mce:style name="dialog" parent="@android:style/Theme.Dialog">< !--
3. < item name="android:windowFrame">@null< /item>
4. < item name="android:windowIsFloating">true< /item>
5. < item name="android:windowIsTranslucent">false< /item>
6. < item name="android:windowNoTitle">true< /item>
7. < item name="android:background">@android:color/black< /item>
8. < item name="android:windowBackground">@null< /item>
9. < item name="android:backgroundDimEnabled">false< /item>
10.
11. -->< /mce:style>< style name="dialog" parent="@android:style/Theme.Dialog" mce_bogus="1"> < item name="android:windowFrame">@null< /item>
12. < item name="android:windowIsFloating">true< /item>
13. < item name="android:windowIsTranslucent">false< /item>
14. < item name="android:windowNoTitle">true< /item>
15. < item name="android:background">@android:color/black< /item>
16. < item name="android:windowBackground">@null< /item>
17. < item name="android:backgroundDimEnabled">false< /item>
18. < /style>
19. < /resources>
< resources>
< mce:style name="dialog" parent="@android:style/Theme.Dialog">< !--
< item name="android:windowFrame">@null< /item>
< item name="android:windowIsFloating">true< /item>
< item name="android:windowIsTranslucent">false< /item>
< item name="android:windowNoTitle">true< /item>
< item name="android:background">@android:color/black< /item>
< item name="android:windowBackground">@null< /item>
< item name="android:backgroundDimEnabled">false< /item>
-->< /mce:style>< style name="dialog" parent="@android:style/Theme.Dialog" mce_bogus="1"> < item name="android:windowFrame">@null< /item>
< item name="android:windowIsFloating">true< /item>
< item name="android:windowIsTranslucent">false< /item>
< item name="android:windowNoTitle">true< /item>
< item name="android:background">@android:color/black< /item>
< item name="android:windowBackground">@null< /item>
< item name="android:backgroundDimEnabled">false< /item>
< /style>
< /resources>
调用时,使用AlerDialog的接口类,Dialog 接口编写如下代码:
Java代码
1. Dialog dialog = new Dialog(SetActivity.this, R.style.dialog);
2. dialog.setContentView(R.layout.test);
3. dialog.show();
发表评论
-
转:开发基于 Google Map 的 Android 应用
2012-07-01 21:27 1012开发基于 Google Map 的 Android 应用 ... -
转:三星安卓手机刷机包(ROM)刷机教程与ROOT教程总索引
2012-05-02 10:15 2184三星安卓手机刷机包(ROM)刷机教程与ROOT教程总索引 ... -
转:Android应用的自动升级、更新模块的实现
2012-01-13 21:33 836Android应用的自动升级、更新模块的实现 我们看到很 ... -
转:打造一款 Android 联网 tic-tac-toe 游戏
2011-11-22 19:37 1003打造一款 Android 联网 tic ...
相关推荐
在Android应用开发过程中,经常需要检查设备当前是否处于联网状态。这是因为许多功能(如数据同步、在线服务等)依赖于网络连接。为了判断当前是否有可用的网络连接,我们可以使用`ConnectivityManager`类。下面的...
以下是一些从"Android_开发技巧经典杂集"文档中可能涵盖的重要知识点: 1. **优化布局(Layout Optimization)** - 使用`ConstraintLayout`进行布局管理,减少嵌套层次,提高性能。 - 使用`ViewStub`加载不常使用...
本期简介 《GOOGLE ANDROID 开发入门与实战》简介 1. 最常用的 ECLIPSE ECLIPSE ECLIPSE ECLIPSE 快捷键& 模拟器...8. 开发技巧杂集 8.1 一些源于 CSS 的组合实现技巧 8.2 关于 SEARCH 搜索框的使用 . . . ......
【Android 开发技巧杂集】 在Android应用开发中,开发者可以运用各种技巧提升应用性能和用户体验。比如,通过使用异步任务处理耗时操作,避免主线程阻塞;利用缓存机制(如LruCache)减少内存消耗和磁盘I/O;优化...
【Java杂集】这个主题涵盖了Java编程语言中的各种实用技巧、工具使用以及源码解析,旨在帮助开发者深入理解和应用Java技术。在这个博文中,作者分享了一些关于Java集合框架的深入理解,以及在实际开发中可能会遇到的...
OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,...
.NET框架是微软开发的一种软件框架,它为开发者提供...综上所述,.NET知识小杂集涵盖了.NET框架的各个方面,对于学习和掌握.NET开发至关重要。无论是初学者还是经验丰富的开发者,都可以从中受益,提升自己的技能水平。
总结起来,《.NET知识小杂集》涵盖了.NET开发的多个重要方面,从动态网页控制到API调用,再到数据库操作和软件工程概念,这些都是.NET开发者需要掌握的基础知识。通过深入理解和实践这些技术,开发者可以更好地构建...
VB杂集.chm <br>欢迎访问我的博客: http://workhelper.blogbus.com
数控刀具杂集 数控加工刀具技术的现状及发展趋势 近年来,在微电子技术、计算机技术、信息工程和材料工程等高新技术的推动下,传统的制造技术得到了飞速的发展,迅速发展成为一门新兴的制造技术——数字化制造技术...
Java学习(初学杂集) Java是一种广泛使用的高级编程语言,以其“一次编写,到处运行”的跨平台特性而闻名。这个“JAVA学习(初学杂集)”的资源可能包含了帮助初学者入门Java编程的各种材料。尽管描述中提到“无用...
汇编语言全接触和应用杂集 iczelion的win32汇编教程 iczelion的odbc教程 iczelion的vxd教程 罗云彬的win32汇编教程 win32经验点滴 加密解密 病毒分析
以上内容涵盖了Linux操作系统的一些基础概念、常见问题的解决方法和系统开发中的实用技巧,对于Linux用户来说是十分重要的学习资料。通过深入理解和实践,可以更好地掌握Linux系统并解决日常遇到的问题。
《AI_Sample_Zoo:探索人工智能的实践宝库》 在当今科技日新月异的时代,人工智能(AI)已经成为了引领未来...通过深入学习和实践这些示例,你将能够更好地掌握AI的核心技术,并在未来的人工智能应用开发中大展拳脚。
另外,文档可能会讨论各种花卉的生长环境和养护技巧。不同的花有不同的光照、温度、湿度和土壤需求。比如,向日葵喜欢阳光充足的地方,而兰花则需要湿润的环境和较高的空气湿度。了解这些条件可以帮助我们更好地照顾...
在IT行业中,编程语言的接口(API)是开发者们日常工作中不可或缺的部分,特别...而OpenGL的代码示例则能帮助开发者掌握复杂图形的绘制技巧。总的来说,这些知识不仅对于面试准备,也是持续提升IT专业技能的重要资源。
"bat转exe工具"则提供了将批处理转换为可执行文件的方法,而"经典批处理集合"可能包含了一些实用的批处理脚本案例。 总之,批处理是一种强大的工具,能够提高工作效率,简化日常的系统管理和维护工作。通过学习和...
15. **数论杂集**:涵盖其他未分类的数论知识。 以上是对信息学奥赛-省选及NOI课程表中的知识点进行了详细的概述。这些知识点不仅包含了数据结构、算法设计等方面的内容,还涉及到了数论、概率统计等多个领域,对于...
"sammelsurium"这个词源于德语,意为“杂集”或“汇集”,在这里指的是一个包含多种代码示例的资源库,方便作者随时回溯和查阅。 【描述】:“sammelsurium 各种代码片段,试用,无论主要是为了我自己的目的,它...