南栀倾寒   >   标签墙   >   Android 标签

在Android Studio中有六种依赖 有更新!

2017-09-05

在Android Studio中有六种依赖 Compile,Provided,APK,Test compile,Debug compile,Release compile Compile compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。 Provided Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。 APK 只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错 Test compile Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。 Debug compile Debug compile 仅仅针对debug模式的编译和最终的debug apk打包。 Release compile Release compile 仅仅针对Release 模式的编译和最终的Release ....

sd卡操作工具类 有更新!

2017-09-05

public class SDCardHelper { private static String TAG = "SDCardHelper"; /* * 判断sdcard是否挂载 / public static boolean isSDCardMounted() { return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); } / * 获取sdcard绝对物理路径 / public static String getSDCardPath() { if (isSDCardMounted()) { return Environment.getExternalStorageDirectory().getAbsolutePath(); } else { return null; } } / * 获取sdcard的全部的空间大小。返回MB字节 */ public static long getSDCardSize() { if (isSDCardMounted()) { StatFs ....

SQliteDatabase相关操作的工具类 有更新!

2017-09-05
0 评论 1,238 浏览

(一)、MySQLiteDatabaseHelper类的封装: 1、public void getConnection(); /** @作用:执行带占位符的select语句,查询数据,返回Cursor @param sql @param selectionArgs @return Cursor / 2、public Cursor selectCursor(String sql, String[] selectionArgs); /* @作用:执行带占位符的select语句,返回结果集的个数 @param sql @param selectionArgs @return int / 3、public int selectCount(String sql, String[] selectionArgs); /* @作用:执行带占位符的update、insert、delete语句,更新数据库,返回true或false @param sql @param bindArgs @return boolean */ 4、public....

Android中的缓存处理及异步加载图片类的封装 有更新!

2017-09-05
0 评论 1,124 浏览

一、缓存介绍: (一)、Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一。 1、没有缓存的弊端: 流量开销:对于客户端——服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量。 加载速度:如果应用中图片加载速度很慢的话,那么用户体验会非常糟糕。 那么如何处理好图片资源的获取和管理呢?异步下载+本地缓存 2、缓存带来的好处: 服务器的压力大大减小; 客户端的响应速度大大变快(用户体验好); 客户端的数据加载出错情况大大较少,大大提高了应有的稳定性(用户体验好); 一定程度上可以支持离线浏览(或者说为离线浏览提供了技术支持)。 3、缓存管理的应用场景: 提供网络服务的应用; 数据更新不需要实时更新,即便是允许3-5分钟的延迟也建议采用缓存机制; 缓存的过期时间是可以接受的(不会因为缓存带来的好处,导致某些数据因为更新不及时而影响产品的形象等) 4、大位图导致内存开销大的原因是什么? 下载或加载的过程中容易导致阻塞; 大位图Bitmap对象是png格式的图....

Bitmap二次采样 有更新!

2017-09-05
0 评论 1,149 浏览

二次采样: (一)、意义或目的: 1、用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。BitmapFactory.decodeFile(imageFile); 2、BitmapFactory.Options.inSampleSize:设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。 3、BitmapFactory.Options提供了另一个成员inJustDecodeBounds。设置inJustDecodeBounds为true后,decodeFile并不分配空间,但可计算出原始图片的长度和宽度,即opts.width和opts.height。有了这两个参数,再通过一定的算法,即可得到一个恰当的inSampleSize。 例如: BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; Bitmap bitmap = BitmapFactory.de....

书签选项卡的分类实现步骤 有更新!

2017-09-05

TabActivity实现选项卡效果的步骤:【了解】 1、写选型卡页面特殊的布局文件: 根节点必须是TabHost,属性android:id=“@android:id/tabhost” 是固定值; 必须有子节点TabWidget,必须有属性android:id=“@android:id/tabs”; 必须有一个布局节点,属性必须是android:id=“@android:id/tabcontent”。 2、继承TabActivity:(以前学习的过程中都是继承android.app.Activity类,但是这里需要继承android.app.TabActivity) 3、创建TabHost对象:通过getTabHost()方法来实现。 4、分别创建TabSpec对象: 通过TabHost对象的newTabSpec()方法创建TabSpec对象; 通过setIndicator()设置标签和图标; 通过setContent()设置内容。 5、TabHost对象添加TabSpec对象。通过TabHost对象的addTab()方法实现添加选项卡。 FragmentActivity 实现选项....

利用Volley对图片的加载 有更新!

2017-09-05

Volley一些介绍就不多说了,利用Volley加载图片主要有3种方式(1)ImageRequest(2)ImageLoader(3)NetWorkImageView 这里我们主要运用的是ImageLoader ImageLoader这个类需要一个Request的实例以及一个ImageCache的实例。图片通过一个URL和一个ImageListener实例的get()方法就可以被加载。从哪里,ImageLoader会检查ImageCache,而且如果缓存里没有图片就会从网络上获取。 Volley的ImageCache接口允许你使用你喜欢的L1缓存实现。不幸的是Volley没有提供默认的实现。在I/O的介绍中展示了BitmapLruCache的一点代码片段,但是Volley这个库本身并不包含任何相关的实现。 ImageCache接口有两个方法,getBitmap(String url)和putBitmap(String url, Bitmap bitmap).这两个方法足够简单直白,他们可以添加任何的缓存实现。 主Activity中的代码 package com.hht.android_....

Eclipse转Android Studio

2017-09-05
0 评论 1,547 浏览

第一步:将Eclipse的上Ant编译的项目导出 1)右击项目进行export选择 Gradle模式导出 如下图: 注意在导出完成后又一个提示: 在导入Studio的时候要选择生成的build.gradle导入而不是选择整个项目导入(不然会导入失败) 第二步:向Studio导入转化完成的项目 1)在Ant转化成Gradle完成后剩下的就是导入Studio了(在导入Studio的时要挂上代理,因为Studio要下载Gradle,并且编译一下你的项目),这地方一般会是你的项目的Gradle版本过低,现在最好是使用Gradle 1.0+的版本 2)在Gradle下完后你发现项目还是报错(不报错就不正常了),最常见的就是你的图片资源很多在Studio下是报错的,编不过的,一个是你的.9图片格式不对,一个可能是你原先的项目里将jpg格式的图片强转成png,这个Studio会有严格的检查,对于其他不是很重要的图片问题你可以在Gradle里配置 aaptOptions { cruncherEnabled = false useNewCruncher = false } 这个来关闭它的....

Android Wear开发浅析 置顶! 有更新!

2017-09-05
0 评论 1,565 浏览

Android Wear究竟是什么? Android Wear和手机是完全不同的设计理念:手机大多数情况下,都是用户去操作,去触发里面的应用;而手表则是“用户被动”的,用户越少感觉到你的存在,越是合理,而在某些场景下给予最合适的提醒,则是Android Wear最伟大的设计理念,这也是它想做到的。 Android Wear是智能的通知栏!(个人理解) 在早上醒来的时候,给你推送早上的天气、交通状况。在你到达餐馆的时候,给你推送大众点评,美团购物券,为你精打细算。检测到你的运动状态,显示计步器,心率状况(Android Wear本身内置)。 Android Wear开发阶段 产品需求方向的确定 很重要的是,产品要设计成什么样子? 手机到手表的信息通知栏样式优化 : 例如设置背景 手机与手表的智能推送:例如通过手表来寻找手机,或是将手机拍到的照片发送给手表 自定义卡片样式:保持卡片样式的基础上,对卡片内的布局进行调整,添加动画,点击等交互 完全自定义界面,提供独特的交互:可抛弃卡片样式,使用WearAPI提供的新组件 手表表盘:各种样式,各种高大上 技术实现 ....

滑动隐藏标题栏 有更新!

2017-09-05

在项目开发中,我们常常遇到一些类似需求,比如列表滑动的时候头部的标题在隐藏和显示两种模式切换,实现方法各种各样,但大体思路就是监听滑动控件的触摸事件 这里我们拿ListView做个例子,实现步骤大体分这么几步: 1. 为ListVie添加监听手势 2. 当用户向上滑动是隐藏标题栏 3. 当用户向下滑动时显示标题栏 第一步:为ListVIew添加手势监听 mListView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mFirstY = event.getY(); break; case MotionEvent.ACTION_MOVE: mCurrentY = event.getY(); if (mCurrentY - mFirstY > mTouchSlop) { // 下滑 显示titl....