技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2013年刚刚入行的Android开发新兵,恭喜你,因为这个平台已经在过去几年里变得愈发成熟了,绝对值得住你全情投入。目前来看,Android现成的开发资源早已经汗牛充栋,我们这篇帖子,就是要在浩如烟海的资源中挑出最重要的那些,呈现给你。本帖对Android开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的Android开发资源。... 全文

Android开发资源 Android开发学习 Android开发

Android高手进阶教程(一)

大家好,今天我们要讲的是android开发中,比较常用的名令集锦, 在我们开发中难免用到Android命令,有些确实命令确实很有用处。特别对于一些初学者来说,命令根本没有想过用也不会用,比如他们想安装一个.apk文件到模拟器上面,但是他们不会启动模拟器,他们只会先启动Eclipse,然后在启动模拟器,这样不但浪费时间,而且Eclipse又占用你的内存。这也是我为什么总结这篇文章的原因了,希望对大家有所帮助。如果想让系统认识你输入的命令(如:输入android命令)有两种方法:1.设置环境变量.(和设置java路径一样,具体网上查哦!);2.直接进入你SDK 里tools目录(cd:sdkpath/tools)这样也OK.不过在此建议使用第一种!下面就是自己的小小总结:1.android: 对你只要输入android就会出来,SDK and AVD manager我们可以更新SDK,增删修改AVD.效果如下图:  2.android list avds: 这条命令将会列出所有我们创建的android模拟器.效果如下图:  3.android list targets: 这条命令是列出我们所有的SDK可用版本,效果如下图:  4.adb devices: 这条命令是列出所有装载的设置,效果如下图(一个是模拟器,一个是真机):  5.adb shell: 这条命令是进入设备根目录/,取得对设备的控制权,如输入ls命令等。  6.adb install XXX.apk. 这条命令是安装apk文件,如果你有多个设备(而你想把apk安装到emulator-5554这个模拟器上)则要输入:adb install -s emulator-5554 D:/XXX.apk.7.emulator -avd avdname 这条命令将启动一个模拟器,初学者学会这条,就不用下次启动模拟器的时候还要打开Eclipse了。用法如下:  8.mksdcard 256M d:\sdcard.img 对于模拟器当然要创建sdcard了,这条命令是将在D盘下生成256M的sdcard.9.adb pull <remote> <local>/adb push <local> <remote>. 我们创建完sdcard以后,要向里面放东西,或者把里面的东西弄出来,就用到以上命令了。以adb push(将sdcard外的东西存放进去.)为例,用法如下:adb push foo.txt /sdcard/foo.txt 10.android create avd --name Android2.0 --target 5 这是创建avd 的命令。--name后面就是avd 的名称,target 是SDK的版本。这条语句是创建名称为Android2.0并且版本为5的avd.创建完可以用android list avds。查看是否已经创建成功。11.ctrl + F11 键的使用当我们启动模拟器的时候,通常是port模式,如果我们想在land下看效果,这个组合按钮就用到啦.看一下效果图: 本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311463... 全文

android教程 集锦 Android android进阶 图文并茂

Android 5.0将为Android Wear带来哪些影响

Android 5.0将为Android Wear带来哪些影响

谷歌刚刚宣布了旗下最新的Android 5.0 Lollipop操作系统,而新系统的SDK开发工具包也已经正式向开发者公布,包括Nexus 4、Nexus 5、Nexus 7、Nexus 10以及刚刚问世的Nexus 6与Nexus 9,都将支持升级到Android Lollipop。不过在新系统发布的时候,谷歌似乎并没有过多的提到Android Wear这个专为智能手表开发操作系统。而未来Android Lollipo... 全文

Android 5.0 Android Wear

新建Android Project和其配置文件的基本介绍

在搭好环境后我们要做的肯定是建一个android工程来看看效果。1.在eclipse里new一个android的工程,在弹出的对话框中有下面几个要填的内容:... 全文

Android Project Android工程 Android开发

谷歌发布Android 3.0系统 推Android商城

【51CTO编者按】北京时间2月3日凌晨消息,在谷歌Android 3.0 Honeycomb 产品演示会上,发布了专用于平板电脑的Android 3.0 Honeycomb系统。本次发布会最重要的一点是网页版Android Market正式发布,这个商店允许用户通过网络浏览器选择应用程序,并且把这些应用程序远程安装到自己的智能手机或平板电脑。以前,Android商城仅提供给运行Android操作系统的设备。... 全文

Android3.0 Android 谷歌

Android瀑布流实例android_waterfall源码分析

今天看了网上的一篇关于android瀑布流实例的源码,并按照自己的喜好改了些内容。源码路径:https://github.com/dodola/android_waterfall... 全文

Android瀑布流 android_waterfall源码分析

Android ApiDemo示例解读1:怎样创建ApiDemo示例工程

一般SDK中都会带有一些示例程序,说明具体用法,Android SDK也是如此。它提供了一些ApiDemo示例,详细说明了Android中主要API,分为以下几大类:1、App2、Content3、Graphics4、Media5、OS6、Text7、Views每个大类又分为几个小类,一共大约有200多个实例,涵盖了Android OS API的各个方面。下面是所有示例的列表:... 全文

Android ApiDemo Android开发 Android SDK

android studio module添加最新的com.android.support:appcompat

我的开发平台是Mac,测试机是MX3(API 19 android 4.4.4),我不确定其他平台是否出现该问题,所以提前说明一下,免得误人子弟。今天再使用自定义ActionBar的时候,出现了一个很奇葩的错误,就是我为自己的module添加了最新的com.android.support:appcompat-v7:21.0.0依赖后,在Activity中使用 final ActionBar actionBar = getActionBar(); actionBar.show(); 来获取ActionBar时,抛出了NullPointerException异常,这让我百思不得其解。这在之前使用一直没用问题啊。。。。。于是,各种百度google,但是并未发现类似问题(我用了最新的support包)。最后,人品爆发,在StackOverFlow上找到了类似的问题,后来我意识到可能是 com.android.support:appcompat-v7:21.0.0版本太高,导致在android 5.0以下的sdk导致不兼容问题。估计,google的脑袋是被枪打了把,话说support包本就是用来做兼容的吧,在这个版本竟然成了导致不兼容的原因。。。。。 错误原因分析如下: 在module的build.gradle文件里,如果用默认的自动依赖处理方式,如下所示:... 全文

android android studio 异常

Android从入门到精通系列资料

part 1: 环境搭建: sdk下载,免翻墙环境搭建与快速入门http://www.devdiv.com/thread-23445-1-1.htmlpart 2: 实例教程: 1. 仿通讯录ListView小例子: http://www.devdiv.com/thread-64391-1-1.html 2. 微博客户端源码 : http://www.devdiv.com/thread-60467-1-1.html 3. UI开发第二篇——多级列表(ExpandableListView) http://www.devdiv.com/thread-39473-1-1.html 4. 给一个兄弟写的能拖拽button的例子 http://www.devdiv.com/thread-47562-1-1.html 5. 分享一个QQ的登陆界面 http://www.devdiv.com/thread-34192-1-1.html 6. 使用Android系统隐藏api http://www.devdiv.com/thread-39304-1-1.html 7. 图片局部放大效果 http://www.devdiv.com/thread-59079-1-1.html 8. 超给力的android 模拟真实书籍翻页效果(附源码) http://www.devdiv.com/thread-62574-1-1.html 9. APK程序卸载提示 http://www.devdiv.com/thread-47060-1-1.html 10. 实现静默安装APK的两种方法 http://www.devdiv.com/thread-52551-1-2.html 11. 实现像handcent sms或者chomp sms那样的气泡短信样式 http://www.devdiv.com/thread-44552-1-2.html 12. 给一个兄弟写的android动画的例子   http://www.devdiv.com/thread-47362-1-3.html 13. 九宫格的实现及九宫格源码 http://www.devdiv.com/thread-39455-1-4.html 14. Android反编译工具Apktool使用 http://www.devdiv.com/thread-44856-1-4.html 15. Android系统搜索对话框(浮动搜索框)的使用 http://www.devdiv.com/thread-44036-1-4.html 16. 自定义ViewGroup的例子 http://www.devdiv.com/thread-47419-1-4.html 17. 一个类似于android启动界面的动画效果 http://www.devdiv.com/thread-47458-1-4.html 18. android Calender控件的例子 http://www.devdiv.com/thread-50444-1-4.html 19. 分享一个定时唤醒屏幕解锁键盘并提示用户的实例 http://www.devdiv.com/thread-64416-1-1.html 20. [Android]四种方式解析字符串----JSON、SAX、DOM、XML http://www.devdiv.com/thread-60304-1-1.html 21. android实现文字倒影源码! http://www.devdiv.com/thread-66737-1-1.html 22. ScrollView中嵌入ListView办法 http://www.devdiv.com/home.php?m ... ckforward=1&id=3530 23. Android开发之系统信息——获取Android已安装程序列表 http://www.devdiv.com/thread-67139-1-1.html 24. Android中获取信号强度 http://www.devdiv.com/thread-58444-1-1.html 25. 从mediaplayer获取正在播放得track info http://www.devdiv.com/thread-53076-1-1.html 26. android自定义View设置shadow http://www.devdiv.com/thread-47410-1-1.html 27. 从WebView中读取html代码: http://www.devdiv.com/thread-45532-1-1.html 28. 给WebView添加Alert支持: http://www.devdiv.com/thread-45530-1-1.html 29. Android开发之系统信息【5】——获取APN列表 http://www.devdiv.com/thread-67405-1-1.html 30. 自绘跑马灯控件 http://www.devdiv.com/thread-67655-1-1.html 31. 仿新浪搜索界面 http://www.devdiv.com/thread-44216-1-1.html 32. 绚丽的ListView表格效果的实现 http://www.devdiv.com/thread-70344-1-1.html 33. 自定义系统菜单的背景 http://www.devdiv.com/thread-47386-1-1.html 34. 介绍一下viewstub的用法 http://www.devdiv.com/thread-47498-1-1.html 35. Android自定义Button的背景和字体样式 http://www.devdiv.com/thread-70547-1-1.html 36. 漂亮Gallery效果代码: http://www.devdiv.com/thread-71349-1-1.html 37. Toast 自定义布局用法 http://www.devdiv.com/thread-71353-1-1.html 38. 网络资源下载时断点续传的实现 http://www.devdiv.com/thread-71412-1-1.html 39. Canvas.DrawText自绘控制换行 http://www.devdiv.com/thread-71661-1-1.html 40. 源码--不搭的跳舞机 http://www.devdiv.com/thread-71762-1-1.html 41. [Android]应用程序无SDCard安装APK http://www.devdiv.com/thread-72452-1-1.html 42. 自定义仿TabHost组件 http://www.devdiv.com/thread-75823-1-1.html 43. [Android]应用语言切换的三种方法 http://www.devdiv.com/thread-78517-1-1.html 44. Android在状态栏上面中添加电源控制进度 http://www.devdiv.com/thread-80186-1-1.html 45. Android 发送短信+接收短信+管理短信+拦截短信 http://www.devdiv.com/thread-80607-1-1.html 46. [Android]为指定的应用创建桌面快捷方式 http://www.devdiv.com/thread-80566-1-1.html 47. UI开发第十一篇——右上角带个泡泡 http://www.devdiv.com/thread-80564-1-1.html 48. 发一个我写的批量静默安装程序 http://www.devdiv.com/thread-81313-1-1.html 49. Android 数字签名学习笔记 http://www.devdiv.com/thread-81882-1-1.html 50. 跳转到这个界面(已安装应用程序的详细信息界面)的action是什么? http://www.devdiv.com/thread-84095-1-1.html 51. Android Bitmap的extractAlpha方法使用举例 http://www.devdiv.com/thread-84202-1-1.html 52. 如何通过NDK使用用纯C/C++在android程序中画条直线、点和图片(没有任何java代码) http://www.devdiv.com/thread-79468-1-1.html 53. 多个apk打包在一起使用 http://www.devdiv.com/thread-85322-1-1.html 54. 自定义dialog http://www.devdiv.com/thread-47268-1-1.html 55.Eclipse 查看Android SDK源码 http://www.devdiv.com/thread-87679-1-1.html 56. Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法 http://www.devdiv.com/thread-87609-1-1.html 其他海量代码,请参考 http://www.devdiv.com/forum.php? ... peid&typeid=209part 3 - 深入学习: Android中文API合集: http://www.devdiv.com/thread-47904-1-1.html Android源代码下载: 源代码下载方法 通过Eclipse定位浏览Android源代码的方法: 可以在Eclipse中点右键查看类的定义源码 Android系统结构、主要组件介绍: android系统结构图应用程序基础,什么是activity/service/task/生命周期/launch mode/activity flag,参考SDK文档 应用程序框架的深入理解: Decor view和ViewRoot什么关系?loop与消息ViewManager与addViewAndroid canvas与surface、ViewRoot、DecorView关系view, view group, window, surface和linux中窗口的对应关系 onInterceptTouchEvent和onTouchEvent调用时序: http://www.devdiv.com/thread-49866-1-1.html Android onTouchEvent, onClick及onLongClick的调用机制: http://www.devdiv.com/thread-49865-1-1.html Activity启动过程: activity manager与activity关系、状态信息及activity启动、resume过程Activity启动流程(1)Activity启动流程(2)Activity启动流程 进程、线程、Application: Android中用AsyncTask简单实现多线程利用handler在work thread中更新主线程ui了解哪些函数是在主线程中执行的android ddms中查看线程释疑线程与looper, message queue, handler关系BroadcastReceiver和ContentObserver与线程service与主线程main thread/activity/service与looplocal service和activity与主线程 深入学习ipc/binder: android的binder机制研究(C++部分)Android IPC机制详解 activity相关: activity manager与activity关系、状态信息及activity启动、resume过程: http://www.devdiv.com/thread-46994-1-1.html Manifest相关: AndroidManifest中application name, label, intent-filter label作用 http://www.devdiv.com/thread-45479-1-1.html 控件技巧: TextView 加链接所有方法 : http://www.devdiv.com/thread-35748-1-1.html media相关 android中的MediaScanner,MediaStore与MediaProvider : http://www.devdiv.com/thread-44863-1-1.html Android调用MediaScanner进行扫描: http://www.devdiv.com/thread-44862-1-1.html 调试技巧: 用真机Debug调试,程序停不下来ndk-gdb 调试如在一开始的时候设断点方法使用eclipse/ndk-gdb对java/native code联合调试 源代码编译与镜像文件: Android源代码编译常见问题及解决办法Android模拟器镜像文件介绍Mac OS X 下android源码编译 打包、签名、安装技巧: 使用命令行打APK包读取签名信息实现静默安装APK的两种方法 解决asset目录压缩导致的问题,e文的,不过资料非常难得: http://www.devdiv.com/thread-47855-1-1.html ... 全文

移动开发 Android精通 Android入门 休闲 Android

【Android游戏源码】坦克大战游戏

少编觉得学习一种语言最快最好的方式就是自己去研究源码与自己试着编写一套完整的程序,随着遇见的问题越来越多了,解决问题的能力也会慢慢提高,所以搜到了一些Android源码,在这里发出来与大家分享,希望各位能精通掌握,学有所成,成有所用,用有所值。一款画面精美的坦克大战源码,希望对大家有帮助。下载地址:http://down.51cto.com/data/874955... 全文

Android游戏源码 Android源码下载 Android坦克大战

Eclipse使用BlueStacks作为android模拟器

开发了android程序就知道,原生的模拟器启动比较慢,还会出现莫名的问题,这边介绍另外一种模拟器:BlueStacks:BlueStacks是一个可以让Android 应用程序运行在Windows系统(目前,该公司再次宣布推出Mac版Bluestacks模拟器。)上的软件,由BlueStacks公司推出。BlueStacks新版本App Player采用名为Layercake的技术,可以让针对ARM处理器开发的安卓应用运行在基于x86处理器的PC或者平板上,而且可以调用PC的显卡,能提供比Alpha版本更加平滑的体验。(来自百度百科)... 全文

BlueStacks eclipse android开发 android模拟器 android

android学习八(android碎片fragment的使用)

       碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用屏幕的空间。首先建立一个平板的模拟器1034*600,环境使用android4.2.2.在建立一个android的项目,项目名为FragmentTest。碎片的简单使用新建一个左侧碎片布局left_fragment.xml代码如下... 全文

android fragment 碎片 android的碎片

Android开发速成简洁教程四:Android应用基本概念

Android平台的一个显著的特点是“低耦合”。Activity是Android应用的一个最基本的用户UI模块。如果采用 Windows Form应用作为参照,Activity相当于Windows中的WinForm。和Windows 应用不同的是,运行一个Activity或是Activity之间的交互是通过消息来实现的。也就是说如果想在起动一个Activity或是在一个 Activity中启动另一个Activity,是通过发送Intent消息来触发,而不像Windows WinForm应用,需要调Form示例的Show或是Load方法来实现。通过Intent消息来实现Activity之间的交互,则最大程度上减小了 模块之间的耦合度。这种机制类同Subscriber/Publisher机制。... 全文

Android开发 Android应用 基本概念

Android高手进阶教程(七)之

大家好,我们这一节讲的是Android Preferences 的学习,Preferences 在Android当中被用来记录应用,以及用户喜好等等,它可以用来保存简单的数据类型,如Int,Double,Boolean等。Preferences中保存的数据可以理解为Map型。我们通过PreferenceManager 以及getDefaultSharedPreferences(Context) 来获取它,比如当我们想获得整数我们可以用 getInt(String key, int defVal) .获取里面的某个键值,当我们想修改时候我们用 putInt(String key, int newVal), 最后用 edit(), 方法提交!千万不要忘记了哦~为了让大家跟好的理解我做了一个简单的Demo,程序主要有个TextView控件,上面写着用户使用改应用的次数。效果如下图所示: 下面是实现Demo的大体步骤:一、新建一个Android工程命名为:PreferencesDemo。二、在修改main.xml布局文件,这里只是在TextView控件里加了一个id.代码如下:view plaincopy to clipboardprint?  <?xml version="1.0" encoding="utf-8"?>     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >     <TextView           android:id="@+id/text"        android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="@string/hello"        />     </LinearLayout>    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <TextView        android:id="@+id/text"     android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:text="@string/hello"     /> </LinearLayout>  三、修改PreferenceDemo.java的代码,全部代码如下:view plaincopy to clipboardprint?  package com.android.tutor;     import android.app.Activity;     import android.content.SharedPreferences;     import android.os.Bundle;     import android.preference.PreferenceManager;     import android.widget.TextView;     public class PreferencesDemo extends Activity {         /** Called when the activity is first created. */        @Override        public void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.main);                                       SharedPreferences mPerferences = PreferenceManager             .getDefaultSharedPreferences(this);                          int counter = mPerferences.getInt("counter", 0);                          TextView mTextView = (TextView)findViewById(R.id.text);                          mTextView.setText("This app has been started " + counter + " times.");                          SharedPreferences.Editor mEditor = mPerferences.edit();                          mEditor.putInt("counter", ++counter);             mEditor.commit();                      }     }    package com.android.tutor;  import android.app.Activity;  import android.content.SharedPreferences;  import android.os.Bundle;  import android.preference.PreferenceManager;  import android.widget.TextView;  public class PreferencesDemo extends Activity {      /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);                              SharedPreferences mPerferences = PreferenceManager          .getDefaultSharedPreferences(this);                    int counter = mPerferences.getInt("counter", 0);                    TextView mTextView = (TextView)findViewById(R.id.text);                    mTextView.setText("This app has been started " + counter + " times.");                    SharedPreferences.Editor mEditor = mPerferences.edit();                    mEditor.putInt("counter", ++counter);          mEditor.commit();                }  }   四、运行代码,实现上述效果.五、查看Preferences文件,首先打开命令终端:adb shell一下,然后cd data/data进入该目录,ls一下我们会发现一大堆包文件,入下图所示: cd com.android.tutor (这里是我程序的包名) /shared_prefs,ls一下会发现.xml文件如下图: 打开.xml文件,格式如下(为什么这样大家自己去理解):view plaincopy to clipboardprint? <?xml version='1.0' encoding='utf-8' standalone='yes' ?>   <map>   <int name="counter" value="3" />   </map>  <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <int name="counter" value="3" /> </map>  OK,今天就到此为止,以上全是个人愚见,如果有什么地方不对的,请指正,谢谢大家!    本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311440... 全文

android进阶 Android android教程 Preferences 移动开发

Android开发11——手机横屏和竖屏与android:configChanges

目前大多数手机都支持重力感应随之而来的就是屏幕方向改变的问题。对应普通开发者来说屏幕的随意改变也会带来困扰。在Google自带的doc里可以看到,如果设备的配置(Resources.Configuration中进行了定义)发生改变,那么所有用户界面上的东西都需要进行更新以适应新的配置。因为Activity是与用户交互的最主要的机制,它包含了处理配置改变的专门支持。除非你特殊指定,否则当配置发生改变(比如屏幕方向、语言、输入设备等等的改变)时你当前的activity都将被销毁,这销毁是通过一个正常的activity生命周期过程进行的。如果activity之前正在前景画面,当这个实例的onDestroy()调用完成后将会启动这个activity的一个新的实例,并将前面那个实例中所保存的内容传递给新的实例。因为任何的应用资源(包括layout文件)都有可能由于任何配置值改变。 ... 全文

android android:configChanges

Android 操作串口 (android serial port api)

        前几天公司有通过搭载Android系统的开发板来使用打卡机统计数据的需求,对于攻城狮来说就需要在Android平台上读写打卡机的串口,在网上搜索一些东西之后发现了在google code 上的android serial port api可以用,墙了之后拿到源码发现还有demo,不错不错,我这个帖子就通过serial port api的源码简单得实现一个读写串口,这个当然是在native写的,如果还有哪些童鞋不清楚android上使用jni和native的话可以跳转到我的上篇帖子 点我点我... 全文

Android 串口 Serial Port API android串口操作

Android高手进阶教程(五)之

大家好我们这一节讲的是LayoutInflater的使用,在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。为了让大家容易理解我做了一个简单的Demo,主布局main.xml里有一个TextView和一个Button,当点击Button,出现 Dialog,而这个Dialog的布局方式是我们在layout目录下定义的custom_dialog.xml文件(里面左右分布,左边 ImageView,右边TextView)。效果图如下: 下面我将详细的说明Demo的实现过程:1、新建一个 Android工程,我们命名为LayoutInflaterDemo.2、修改main.xml布局,里面主要在原来基础上增加了一个Button.代码如下:view plaincopy to clipboardprint?  <?xml version="1.0"      encoding="utf-8"?>     <LinearLayout      xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >     <TextView           android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="@string/hello"        />     <Button         android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="ShowCustomDialog"        />     </LinearLayout>    <?xml version="1.0"   encoding="utf-8"?> <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <TextView        android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:text="@string/hello"     /> <Button  android:id="@+id/button"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="ShowCustomDialog"  /> </LinearLayout>  3.定义对话框的布局方式,我们在layout目录下,新建一个名为 custom_dialog.xml文件具体代码如下:view plaincopy to clipboardprint?  <?xml version="1.0"      encoding="utf-8"?>     <LinearLayout      xmlns:android="http://schemas.android.com/apk/res/android"                  android:orientation="horizontal"                  android:layout_width="fill_parent"                  android:layout_height="fill_parent"                  android:padding="10dp"                  >         <ImageView android:id="@+id/image"                   android:layout_width="wrap_content"                   android:layout_height="fill_parent"                   android:layout_marginRight="10dp"                   />         <TextView android:id="@+id/text"                  android:layout_width="wrap_content"                  android:layout_height="fill_parent"                  android:textColor="#FFF"                  />     </LinearLayout>    <?xml version="1.0"   encoding="utf-8"?> <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="horizontal"               android:layout_width="fill_parent"               android:layout_height="fill_parent"               android:padding="10dp"               >     <ImageView android:id="@+id/image"                android:layout_width="wrap_content"                android:layout_height="fill_parent"                android:layout_marginRight="10dp"                />     <TextView android:id="@+id/text"               android:layout_width="wrap_content"               android:layout_height="fill_parent"               android:textColor="#FFF"               /> </LinearLayout>  4.修改主程序LayouInflaterDemo.java代码如下: view plaincopy to clipboardprint?  package com.android.tutor;     import android.app.Activity;     import android.app.AlertDialog;     import android.content.Context;     import android.os.Bundle;     import android.view.LayoutInflater;     import android.view.View;     import android.view.View.OnClickListener;     import android.widget.Button;     import android.widget.ImageView;     import android.widget.TextView;     public class LayoutInflaterDemo extends Activity implements      OnClickListener {                  private Button button;         public void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.main);                          button = (Button)findViewById(R.id.button);             button.setOnClickListener(this);         }         @Override        public void onClick(View v) {                          showCustomDialog();         }                  public void showCustomDialog()         {             AlertDialog.Builder builder;             AlertDialog alertDialog;             Context mContext = LayoutInflaterDemo.this;                          //下面俩种方法都可以             ////LayoutInflater inflater = getLayoutInflater();             LayoutInflater inflater = (LayoutInflater)      mContext.getSystemService(LAYOUT_INFLATER_SERVICE);             View layout = inflater.inflate(R.layout.custom_dialog,null);             TextView text = (TextView) layout.findViewById(R.id.text);             text.setText("Hello, Welcome to Mr Wei's blog!");             ImageView image = (ImageView) layout.findViewById(R.id.image);             image.setImageResource(R.drawable.icon);             builder = new AlertDialog.Builder(mContext);             builder.setView(layout);             alertDialog = builder.create();             alertDialog.show();         }     }    package com.android.tutor;  import android.app.Activity;  import android.app.AlertDialog;  import android.content.Context;  import android.os.Bundle;  import android.view.LayoutInflater;  import android.view.View;  import android.view.View.OnClickListener;  import android.widget.Button;  import android.widget.ImageView;  import android.widget.TextView;  public class LayoutInflaterDemo extends Activity implements   OnClickListener {         private Button button;      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);                    button = (Button)findViewById(R.id.button);          button.setOnClickListener(this);      }   @Override  public void onClick(View v) {        showCustomDialog();   }      public void showCustomDialog()   {    AlertDialog.Builder builder;    AlertDialog alertDialog;    Context mContext = LayoutInflaterDemo.this;        //下面俩种方法都可以    ////LayoutInflater inflater = getLayoutInflater();    LayoutInflater inflater = (LayoutInflater)   mContext.getSystemService(LAYOUT_INFLATER_SERVICE);    View layout = inflater.inflate(R.layout.custom_dialog,null);    TextView text = (TextView) layout.findViewById(R.id.text);    text.setText("Hello, Welcome to Mr Wei's blog!");    ImageView image = (ImageView) layout.findViewById(R.id.image);    image.setImageResource(R.drawable.icon);    builder = new AlertDialog.Builder(mContext);    builder.setView(layout);    alertDialog = builder.create();    alertDialog.show();   }  }   5、最后执行之,点击Button,将得到上述效果。 好今天就到此为止,睡觉了,大家有什么不明白的请留言~谢谢!  本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311450... 全文

android开发 Android Layoutinflater android教程 移动开发

Android高手进阶教程(三)之

大家好我们今天的教程是在Android 教程中自定义View 的学习,对于初学着来说,他们习惯了Android 传统的页面布局方式,如下代码:view plaincopy to clipboardprint?  <?xml version="1.0" encoding="utf-8"?>     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >     <TextView           android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="@string/hello"        />     </LinearLayout>    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <TextView        android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:text="@string/hello"     /> </LinearLayout>   当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:view plaincopy to clipboardprint?  <?xml version="1.0" encoding="utf-8"?>     <A>         <B></B>     </A>    <?xml version="1.0" encoding="utf-8"?> <A>  <B></B> </A>   view plaincopy to clipboardprint? 其中A extends LinerLayout, B extends TextView.  其中A extends LinerLayout, B extends TextView.为了帮助大家更容易理解,我写了一个简单的Demo ,具体步骤如下:首先新建一个Android 工程 命名为ViewDemo .然后自定义一个View 类,命名为MyView(extends View) .代码如下:view plaincopy to clipboardprint?  package com.android.tutor;     import android.content.Context;     import android.graphics.Canvas;     import android.graphics.Color;     import android.graphics.Paint;     import android.graphics.Rect;     import android.graphics.Paint.Style;     import android.util.AttributeSet;     import android.view.View;     public class MyView extends View {         private Paint mPaint;         private Context mContext;         private static final String mString = "Welcome to Mr Wei's blog";                  public MyView(Context context) {             super(context);                  }         public MyView(Context context,AttributeSet attr)         {             super(context,attr);                  }         @Override        protected void onDraw(Canvas canvas) {             // TODO Auto-generated method stub             super.onDraw(canvas);                          mPaint = new Paint();                          //设置画笔颜色             mPaint.setColor(Color.RED);             //设置填充             mPaint.setStyle(Style.FILL);                          //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标             canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);                          mPaint.setColor(Color.BLUE);             //绘制文字             canvas.drawText(mString, 10, 110, mPaint);         }     }    package com.android.tutor;  import android.content.Context;  import android.graphics.Canvas;  import android.graphics.Color;  import android.graphics.Paint;  import android.graphics.Rect;  import android.graphics.Paint.Style;  import android.util.AttributeSet;  import android.view.View;  public class MyView extends View {   private Paint mPaint;   private Context mContext;   private static final String mString = "Welcome to Mr Wei's blog";      public MyView(Context context) {    super(context);      }   public MyView(Context context,AttributeSet attr)   {    super(context,attr);      }   @Override   protected void onDraw(Canvas canvas) {    // TODO Auto-generated method stub    super.onDraw(canvas);        mPaint = new Paint();        //设置画笔颜色    mPaint.setColor(Color.RED);    //设置填充    mPaint.setStyle(Style.FILL);        //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标    canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);        mPaint.setColor(Color.BLUE);    //绘制文字    canvas.drawText(mString, 10, 110, mPaint);   }  }     然后将我们自定义的View 加入到main.xml 布局文件中,代码如下:  view plaincopy to clipboardprint?  <?xml version="1.0" encoding="utf-8"?>     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >     <TextView           android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="@string/hello"        />     <com.android.tutor.MyView         android:layout_width="fill_parent"          android:layout_height="fill_parent"      />     </LinearLayout>    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <TextView        android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:text="@string/hello"     /> <com.android.tutor.MyView  android:layout_width="fill_parent"       android:layout_height="fill_parent"   /> </LinearLayout>   最后执行之,效果如下图: OK,大功告成,今天就写到这里,开始做饭了,老婆孩子等我做饭了,lol~  本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311457... 全文

View android教程 android进阶 Android 移动开发

4 5 6 7 8 9 10 11 12 13