android 学习
飞奔的蜗牛93
我
展开
-
Handler基本使用
Handler基本概念 Handler:接收子线程发送的数据,并用此数据配合主线程更新UI。(子线程与主线程通信的工具) Handler定义在主线程中(UI线程中); Handler充当主线程和子线程之间交互的中介: Handler在新启动的子线程中发送消息; 主要方法 post(Runnable)postAtTime(Runnable,long)sendEmptyMessage(i原创 2015-07-15 16:16:03 · 390 阅读 · 0 评论 -
横竖屏切换
当activity在AndroidMainfest中不设置configChanges属性时,横屏切换竖屏、竖屏切换横屏时,Activity中回调的方法如下: 在这种情况下屏幕的切换不会自动保存原有的状态,但是可以通过在 onSaveInstanceState中保存,在onRestoreInstanceState方法中获取之前保存的信息的方法回复屏幕中原状态,如保存edittext中的信息:原创 2016-05-11 09:56:11 · 2389 阅读 · 0 评论 -
单例模式
定义:确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例实现单例的关键点: 构造函数不对外开放,一般为private 通过静态方法或者枚举返回单例类对象 确保单例类的对象有且只有一个,尤其在多线程环境下 确保单例在反序列化时不会重新构建函数实现方式 饿汉模式private static SignalTask mSignalTask = new SignalTask();原创 2015-11-30 09:02:59 · 237 阅读 · 0 评论 -
string 字符匹配
在xml里声明:<string name="mosaic">I %1$d love %2$s</string>java中进行匹配:mTextView.setText(String.format(getString(R.string.mosaic), 1314,"you"));直接在java代码中进行设置String.format("%s %d %s", "I",1314,"love you原创 2016-06-02 14:15:47 · 490 阅读 · 0 评论 -
隐藏标题栏的方式
在onCreat()中设置 requestWindowFeature(Window.FEATURE_NO_TITLE); 此方法需要在setContentView(xxx)之上getActionBar().hide(); //此方法的设置没有限制在mainfest中设置: android:theme=”@android:style/Theme.Light.NoTitleBar”原创 2016-07-13 10:28:16 · 378 阅读 · 0 评论 -
ScrollerView中嵌套多个ListView,ListView都展示出
方法一:通过重写listView(此方法可用于使ListView高度自适应,GridView同样适用)public class SearchListView extends ListView { public SearchListView(Context context) { // TODO Auto-generated constructor stub sup原创 2016-07-26 10:51:20 · 583 阅读 · 0 评论 -
Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
转自:http://blog.csdn.net/lmj623565791/article/details/38377229/ 1、概述话说最近股市变动不变,也成了热火朝天的话题。不知道大家有没有考虑做个实时更新股市数据的app呢?假设我们要做一个股市数据实时更新的app,我们可以在网上找个第三方的股市数据接口,然后在我们的app中每隔1分钟(合适的时间)去更新数据,然后更新我们的UI即可。当然了,转载 2016-06-19 16:38:22 · 759 阅读 · 0 评论 -
ListView view复用后混乱问题
在getView()中根据情况为holder.view设置内容为view设置tag原创 2016-07-20 15:07:56 · 396 阅读 · 0 评论 -
Android 数据库
## SQLiteOpenHelper认识 ## 作用: 方法: // getWritableDatabase() 或者 getReadableDatabase() 被调用时才真正的被创建 SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)//作用原创 2016-08-02 13:58:53 · 191 阅读 · 0 评论 -
View 滑动的实现方式
瞬时移动实现 1. scroller 2. 使用动画 3. 改变布局参数 ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) btn2.getLayoutParams(); param.leftMargin = 100; btn2.setLayoutParams(para原创 2016-08-30 10:55:07 · 274 阅读 · 0 评论 -
JNI 编程基础
简介JNI(Java Native Interface) Java调用C/C++,C/C++调用Java的一套API 2. JNI编程的步骤 编写native方法 javah命令,生成.h头文件(cmd命令进入java工程的src文件夹) 复制.h头文件到CPP工程中 复制jni.h和jni_md.h文件到CPP工程中原创 2016-08-20 19:36:47 · 316 阅读 · 0 评论 -
锁屏上显示Activity
在Android中,有些比较强的提醒,需要用户紧急处理的内容。需要唤醒屏幕,甚至在锁定屏幕的情况下,也要显示出来。例如,来电界面和闹钟提醒界面。这是怎样实现的呢?其实,实现起来非常简单。只要给Activity的Window添加如下属性即可:@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCrea转载 2016-09-12 14:38:55 · 426 阅读 · 0 评论 -
Android NDK编程
NDK编程的步骤 (前提:eclipse拥有ndk编程环境. 此工程演示文件拆分、合并的功能)-新建Android工程(废话)创建类编写java层native方法/** * 拆分 * @param path 文件原始路径 * @param path_pattern 拆分的路径 * @param count 拆分的个数 */ pub原创 2016-08-24 16:48:28 · 239 阅读 · 0 评论 -
C语言基础
基本数据类型 int %d; short %d; long %l; float %f; double %lf; char %c; //声明时用”单引号;声明数组时使用“”计算所占字节数 sizeof (数据类型)指针 定义:存储的变量的内存地址 int a = 10;int *p = &a;//p为a在内存空间的地址通过指针可以修改a的值*原创 2016-08-02 17:25:53 · 281 阅读 · 0 评论 -
Activity声明周期在不同场景的调用
第一次启动 08-08 10:13:57.309: E/Activity_Process(30216): onCreate 08-08 10:13:57.312: E/Activity_Process(30216): onStart 08-08 10:13:57.312: E/Activity_Process(30216): onResume home键 08-08 10:14:27.82原创 2015-08-20 21:04:57 · 335 阅读 · 0 评论 -
Android studio 2.2 NDK 开发
转自http://www.jianshu.com/p/18724f29d30e转载 2016-10-05 23:53:38 · 257 阅读 · 0 评论 -
apk签名
意义:为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。使用eclipse导出带有签名的apk导出apk 创建密钥库keystore,输入密钥库导出位置和密码,记住密码,下次Use existing keystor转载 2016-05-24 11:21:21 · 299 阅读 · 0 评论 -
获取视频缩略图
获取SD卡所有的视频文件路径 “` public static ArrayList getAllVideoUrls(Context context){ ArrayList allVideoUrls = new ArrayList(); Uri mImageUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; Conte原创 2016-04-28 17:47:00 · 1249 阅读 · 0 评论 -
Volley详解
转自:http://www.cnblogs.com/caobotao/p/5071658.html. Volley简介 volley的英文意思为‘群发’、‘迸发’。Volley是2013年谷歌官方发布的一款Android平台上的网络通信库。Volley非常适合一些数据量不大,但需要频繁通信的网络操作。使用Volley进行网络开发可以使我们的开发效率得到很大的提升,而且性能的稳定性也比较高。但是V转载 2016-04-04 11:03:46 · 346 阅读 · 0 评论 -
WindowManager$BadTokenException&&permission denied for this window type
出现次错误时不仅要在Manifest.xml中添加 要在代码中添加 WindowManager.LayoutParams params = networkDialog.getWindow() .getAttributes(); params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;原创 2015-07-17 17:36:52 · 581 阅读 · 0 评论 -
Home,Back,Menu
activity生命周期 home键和back键的区别 在Android中,当按下Home键,默认情况下stop前台的actiity,即activity设置成onstop,而不是ondestory。如果再次启动该activity不是调用onCreate,而是调用onSavedInstanceState方法,保持上次Activity的状态则是从onRestart开始->onStart->onResu原创 2015-07-20 19:31:14 · 467 阅读 · 0 评论 -
intent
Intent最主要的作用就是,使用Intent启动三大核心组件 启动activity: startActivity() startActivityForResult()[可以获取返回值进行处理] 启动service: startService() bindService() 在调用组件和目标service间建立连接 启动broadcast:原创 2015-09-24 10:59:45 · 315 阅读 · 0 评论 -
获取textview每行的内容
tv=(TextView)findViewById(R.id.tv);Layout layout=tv.getLayout();//layout.draw(canvas);int line=tv.getLayout().getLineCount();String result="";String text=layout.getText().toString();for(int i=0;i转载 2015-10-21 20:05:02 · 3167 阅读 · 3 评论 -
Activity新认识
一个activity生命周期 显示状态:oncreat;onstart;onresume 不可见状态:onPause;onStop 销毁状态:onDestory多个activity交互的生命周期 从A跳到B A B onCreat onStart onResume onPause原创 2015-11-03 09:05:27 · 453 阅读 · 0 评论 -
ContentProvider
数据共享 ContentProvider,这是一种不同应用之间共享数据的标准API: 当应用希望提供数据时,就提供Contentprovider 其他应用通过ContentResolver来操作 注意: ContentProvider需要在AndroidManifest.xml中注册 一旦应用提供CP,不论应用启动与否,都可被操作 ContentProvider是单例模式的,多个Con原创 2015-10-27 19:42:53 · 254 阅读 · 0 评论 -
判断应用是否存在
根据包名private Boolean isAppInstall(String packageName){ PackageManager pm = mContext.getPackageManager(); List<PackageInfo> pinfo = pm.getInstalledPackages(0); if (pinfo != null原创 2015-11-14 15:42:20 · 541 阅读 · 0 评论 -
屏幕适配
屏幕适配 的基本概念 屏幕尺寸:屏幕的对角线长度:1英寸 = 2.54厘米 屏幕分辨率:在横纵向上的屏幕点数,单位px 纵向*横向 = 1920*1080 屏幕像素密度:每英寸上的像素点数 ,单位dpi,(√横向^2+纵向^2)/屏幕英寸数 px:像素,构成图像的最小单位 dp\dip:密度无关像素;160dpi为基准,1dip=1px原创 2015-11-01 14:34:22 · 316 阅读 · 0 评论 -
判断网络状态
判断网络是否可用public static boolean isNetworkAvailable(Context context) { try { ConnectivityManager cn = (ConnectivityManager) context .getSystemService(Context.CONNE原创 2015-11-18 19:21:39 · 282 阅读 · 0 评论 -
AdapterView和Adapter
AdapterView:容器组件,其子元素内容的有adapter所决定 ListView:以垂直滑动列表形式显示一组数据。 GridView:以网格形式显示一组数据。 Spinner:以下拉列表形式显示一组数据。 Gallery:以水平滑动列表形式显示一组数据。Adapter数据和视图之间交互的中介 ArrayAdapter:最简单的适配器,数据源为文本字符串数组。 ArrayA原创 2015-11-02 19:09:14 · 347 阅读 · 0 评论 -
android view显示在最顶层
view.bringToFront() 可以讲布局在下层的控件放到上层,不被其他控件挡住。转载 2016-01-29 15:15:16 · 13630 阅读 · 0 评论 -
进程通信
转自:http://blog.csdn.net/toyuexinshangwan/article/details/8640709 由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Prov转载 2016-03-03 16:31:08 · 233 阅读 · 0 评论 -
[Android] ListView中getView的原理+如何在ListView中放置多个item
转载:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html ListView 和 Adapter 的基础工作原理:ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。 一个新的视图被返回并显示 如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可转载 2016-03-17 15:09:45 · 258 阅读 · 0 评论 -
Activity四种启动模式
转载:http://blog.csdn.net/liuhe688/article/details/6754323 今天在社区看到有朋友问“如何在半年内成为顶级架构师”,有网友道“关灯睡觉,不用半年的…”,的确,做梦还来的快一些。作为一个程序员,树立远大的目标是值得欣赏的,但不能只去空想,要一步一步地实践才行。成大事者,须从小事做起;万事起于忽微,量变引起质变。 我们今天要讲的是Activity的转载 2016-02-19 13:05:20 · 294 阅读 · 0 评论 -
ViewPager使用
很好的两篇文章: http://blog.csdn.net/alangdangjia/article/details/9054921 http://www.cnblogs.com/lianghui66/p/3607091.html 1. ViewPager和Fragment的使用ViewPager mViewPager = new ViewPager();Fragment[] mTab原创 2016-04-03 10:34:11 · 206 阅读 · 0 评论 -
Android 内存泄漏
造成内存泄漏的原因资源未关闭造成的内存泄漏 BraodcastReceiver,ContentObserver,File,Cursor,Stream等等资源bitmap没有被回收对象的引用没有被释放 单例的不规范使用 “` public static xxx getInstance(Context context){ if(this.instance == null){ ins原创 2016-10-19 21:07:11 · 253 阅读 · 0 评论