Android
文章平均质量分 55
ForrestL
Android开发工程师
展开
-
重复引用jar包问题和降低编译版本问题总结
降低版本本地一般建工程的时候,Android Studio一般选用的是本地的最高版本。这样就导致新建的工程都是compileSdkVersion为25,工程的依赖如图: 要是直接更改compileSdkVersion 为21的话就会报valudes-v23.xml not found的问题了,为了解决这个问题需要改动三个地方1.theme 需要改成不是Theme.AppComp原创 2017-11-27 20:06:24 · 1786 阅读 · 0 评论 -
Android中百度导航引擎初始化失败问题
1.我使用的是AndroidStudio1.3版本(1.4出来了懒得更新)我遇到问题按照以下顺序进行解决2.首先检查assets里面的东西放入到工程里面了没有3.检查jar包是否导入4.检查权限然而,所有都检查过后并且确认无误以后依然出现了“百度引擎初始化失败的问题”,然后看出现报错的log,11-12 13:00:54.163 16195-16195/com.text.my.map E/link原创 2015-11-12 13:06:15 · 6636 阅读 · 2 评论 -
传感器的应用/SurfaceView/制作简单的指南针
传感器的简单应用之光照传感器1.手机上传感器的使用首先需要得到系统服务private SensorManager mSensorManager;mSensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);2.然后得到在得到服务的类型,即选用哪种传感器 Sensor sensor=mSensorManager.ge原创 2015-09-22 15:08:51 · 945 阅读 · 0 评论 -
Android动画Animation/Animator/LayoutTransition
动画Animation1.Animation有5个子类: AlphaAnimation, AnimationSet, RotateAnimation, ScaleAnimation, TranslateAnimation 分别代表透明度动画,动画集合,旋转动画,缩放动画,平移动画2.透明度动画AlphaAnimation://透明度显示,第一个参数是开始时的透明度,第二个参数是结束时的透明度,0代表原创 2015-09-20 11:04:52 · 744 阅读 · 0 评论 -
Android自定义View绘制圆形、方形、弧形、球形四种形态的模仿下载进度条
绘制步骤1.首先创建以JAVA类继承与View,然后调用前两个构造器2.然后设置画布的宽度和高度3.绘制图形(见代码)4.在XML文件布局中添加该View并附上id5.为了模仿下载进度条,需要在Activity中找到该View,利用Handler提交数据即提交下载完成度,并不断更新View(可以设置延迟来模仿)6.代码实现弧形进度条自定义Viewpublic class ProgressArcVie原创 2015-09-16 21:48:55 · 2233 阅读 · 0 评论 -
自定义ViewGroup
自定义Viewgroup1.创建一个JAVA类继承于viewGroup2.重写构造器3.复写onLayout方法4.在onMeasure方法下让子View测量自己measureChildren(width,height);//让在这个View下的子View自己测量自己(第一个参数是这个View的所要求的宽,第二个参数是这个View所要求的长度)5.最后得到子View,然后对其布局进行处理 @Ove原创 2015-09-19 16:04:45 · 507 阅读 · 0 评论 -
自定义View实现擦除蒙版显示图片功能/自定义View的存储/自定义View的属性
自定义View实现擦除蒙版显示图片功能1.首先找到一张图片,利用BitmapFactory.decodeResource()方法得到它,作为画布的最底层将其绘制到画布的最底层canvas.drawBitmap(mBitmapBackground,new Rect(0,0,mBitmapBackground.getWidth(),mBitmapBackground.getHeight()),原创 2015-09-18 19:13:44 · 694 阅读 · 0 评论 -
自定义View画出手机通讯录中右边字母,并设置TouchEvent/观察者模式
首先画出26 个字母1.画出26个字母首先需要一个字符数组,里面的包含了26个英文字母2.设置字母的高度为当前View的总高度除以float类型的26,设置字母显示位置,横坐标是当前View 的宽度减去一个字母的宽度,这样可以让字母显示到View 的右边缘上,纵坐标是根据字母的高度,往下累加(见代码)3.利用for循环绘制出26个字母点击字母时确定点击的是哪个字母,点击是更换颜色1.复写onTouc原创 2015-09-17 20:58:41 · 750 阅读 · 0 评论 -
Android自定义控件——自定义View绘制钟表
自定义View,绘制一个钟表1.首先创建一个JAVA类继承于View,里面有四个构造器,一般情况下调用前2个构造器,2.进行绘制图形操作(详细见代码部分)3.绘制完成后为了实现秒针、分针和时针的走动,需要不断的向UI线程发送消息从而进行重新绘制,这就需要用到Handler向UI线程不断发送消息,同时不断得到当前系统时间刷新绘图的位置。必须要调用invalidate();方法提醒UI线程进行重新绘制4原创 2015-09-16 21:37:38 · 1239 阅读 · 0 评论 -
多媒体应用之/SoundPool/MediaRecorder/MediaPlayerVideo/SurfaceView
SoundPool1.SoundPool是用于播放提示音的适合短促且对反应速度比较高的情况,要求他占用的内存小(一般在20k左右就很大了)2.代码实现public class MainActivity extends AppCompatActivity { private Button mBtnSound; private SoundPool pool; private in原创 2015-09-15 19:32:32 · 642 阅读 · 0 评论 -
Volley和xUtils
Volley1.Volley是对HTTP通信的再简化操作2.Volley适合通信量不大但是特别频繁的场景3.在android studio中要导入volley的jar包,导入方法是: Project Structure→Dependencies→+→选择第一个→在搜索框中输入volley→选择第一个点击OK就可以了4.Volley的逻辑图是 5.实现Volley的代码如下,并且顺带把ImageL原创 2015-09-16 20:31:57 · 799 阅读 · 0 评论 -
自定义View之Bitmap/在Bitmap上绘制新的图形/Xfermode属性
绘制Bitmap利用Matrix可以将Bitmap拉伸、平移、翻转、对称操作1.首先是拉伸:需要调用Matrix.postScale()方法,第一个参数是沿x轴拉伸的倍数,第二个参数是沿y轴拉伸的倍数2.平移:Matrix.postTranslate(),一个参数是沿x轴平移距离,第二个参数是沿y轴平移距离3.旋转:Matrix.postRotate(),里面传入旋转角度4.沿x轴对称,倒影效果:原创 2015-09-17 20:07:43 · 761 阅读 · 0 评论 -
点击事件的传递/实现下拉刷新/手势检测
点击事件的传递1.DispatchTouchEvent()返回True代表可以分发事件,2.onInterceptTouchEvent()返回False表示不拦截事件,3.onTouchEvent()返回True代表执行点击事件,在执行完以后必须返回True,否则不会处理Touch事件 通过点击事件来实现下拉刷新的操作实现下拉刷新的原理其实就是在FramLayout布局中添加两个View,写有下拉原创 2015-09-24 19:12:45 · 787 阅读 · 0 评论 -
下拉刷新
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9255575最近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在网上直接找一个现成的,可是尝试了网上多个版本的下拉刷新之后发现效果都不怎么理想。有些是因为功能不完整或有Bug,有些是因为使用起来太复杂,十全十美的还真没找到。因此我也是放弃了在网上找现成代码的想法,自己花转载 2015-10-13 20:55:29 · 578 阅读 · 0 评论 -
设置maxLines=2,ellipseSize=end,判断文本内容是否超出,显示省略号
TextView的两个属性1、maxLines : 能显示的最大的行数,如设置maxLines=”2”则最大显示的行数为2,如果文本内容不够两行,就会将内容显示全 2、ellipseSize : 文本缩略显示位置控制,有三个值:start,middle end 分别表示当文本内容显示不下时,在文本的开始,中间,和结束显示’…’ 通常maxLines和ellipseSize是结合使用的需求让一段不原创 2017-04-01 17:08:08 · 2389 阅读 · 1 评论 -
AndroidStudio报错AAPT: libpng error: Not a PNG file
AndroidStudio在Clean时报的错误信息(在Gradle Console里):AAPT: libpng error: Not a PNG fileAAPT: libpng error: Not a PNG fileError: java.lang.RuntimeException: Some file crunching failed, see logs for details:a原创 2016-10-19 19:00:28 · 2091 阅读 · 0 评论 -
Android实现圆弧形渐变色进度条
效果图:我写的这篇博客个人感觉非常的不详细,这也是根据UI设计的,不过大家掌握下文所点出来的重点方法也可以将其绘制出来,这里就不详细介绍绘制流程了 UI分析:这个UI细分为表盘刻度、进度条底色、进度条渐变色、最外层那个实心圆球和文字描述。接下来就逐个实现一、绘制表盘刻度1、绘制表盘的刻度主要是用了画布的旋转来进行绘制 利用canvas.rotate()方法来旋转画布。利用canva.drawTe原创 2016-08-23 10:09:32 · 13432 阅读 · 7 评论 -
Android Studio多渠道打包和代码混淆教程
原文地址 : http://blog.csdn.net/leeo1010/article/details/49903759转载 2016-09-13 10:40:43 · 651 阅读 · 0 评论 -
15 个 Android 通用流行框架大全(2016)
1. 缓存 Java实现基于LRU的磁盘缓存 2.图片加载Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 3. 图片处理Picasso-transformations 一个为Picasso提供多种图片转载 2016-09-09 16:58:38 · 1288 阅读 · 0 评论 -
内存泄漏检测工具和Handler引起的内存泄漏问题
内存泄漏定义内存泄漏也称作“存储泄漏”,用动态存储分配函数动态开辟的空间,在使用完毕之后未释放,结果导致一直占据内存单元,直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓的内存泄漏。 Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在原创 2016-09-09 16:36:56 · 729 阅读 · 0 评论 -
ViewPager实现画廊效果
1.先看一下效果2.技术要点:1、setClipChildren(boolean clipChildren)方法: clipChild用来定义他的子控件是否要在他应有的边界内进行绘制。 默认情况下,clipChild被设置为true。 也就是不允许进行扩展绘制。而在这个Demo中承载ViewPager的父容器必须要将其设置为false才可以绘制旁边的两页 2、setPageTr...原创 2016-08-04 10:44:15 · 13654 阅读 · 1 评论 -
Android利用ant将多个jar包合并成一个jar包
做项目的时候(Eclipse),看到自己的libs文件夹下的jar包越来越多(引入第三方的库),同时也就出现了65536的问题,看了这一篇博客http://my.oschina.net/u/992018/blog/354513说是要将jar包利用ant转化成1个jar包,但是这篇博客的没有1、AntApache Ant是一个基于Java的生成工具。据最初的创始人James Duncan Davids原创 2016-02-17 18:08:26 · 4828 阅读 · 4 评论 -
Android自定义通知栏/状态栏颜色
原文地址:http://blog.csdn.net/baiyuliang2013/article/details/46674735适用版本谷歌是在4.4版本以后允许开发者自定义通知栏/状态栏背景颜色,4.4以前是不支持这个功能方法1设置主题 不过由于市场上的SDK版本很多所有不建议用这种方法Theme.Holo.Light.NoActionBar.TranslucentDecor Theme.H转载 2016-01-14 17:50:37 · 1519 阅读 · 0 评论 -
ListView的item中内部点击事件的传递
在一般的情况下ListView的点击事件只需要的在Activity中设置一个onItemClickListener()方法。但是遇到item里面的按钮、图片、文字、需要点击的时候,就需要把点击事件从Adapter中传到Activity中 首先创建一个接口public interface Callback { public void click(View view);}在Adapter原创 2015-11-18 17:27:02 · 4267 阅读 · 0 评论 -
Android OnLowMemory和OnTrimMemory
OnLowMemory OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory。系统提供的回调有:Application/Activity/Fragementice/Service/ContentProvider 除了上述系统提供的API,还可以自己实现Compo转载 2015-11-16 09:21:24 · 841 阅读 · 0 评论 -
调用系统的Camera和相册/压缩照片
调用系统的Camera1.这只是简单的调用一下摄像头,然后拍一张照片。这个命令是基于Intent的,需要在setAction中添加调用摄像头的语句,然后利用Intent.putExtra将得到的照片存放到file里 最后复写onActivityResult,将拍下来的照片显示到ImageView上2.需要权限<uses-permission android:name="android.permis原创 2015-09-16 20:55:27 · 588 阅读 · 0 评论 -
android自定义View创建一个Path绘制多边形,贝塞尔曲线,
自定义View绘制多变形1.在绘制多变形中Path非常重要,它可以连接指定点,从而实现绘制多变形的目的。也可以添加圆形路径和弧度路径以及矩形路径,最后调用canvas.drawPath将路径画出来就可以了2.在路径上添加文本需要调用 canvas.drawTextOnPath()方法,第一个参数是文本内容,第二个参数是路径,第三个表示添加文本的起始位置距路径的距离,第四个参数表示的是在路径的上方还是原创 2015-09-17 19:34:06 · 2401 阅读 · 0 评论 -
2015/8/18/Activity框图/Linear与RelativeLayout布局
Activity活动框图LinearRelative生命周期图 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。 3.当前Activity由被覆盖状态回到前台或解锁屏:原创 2015-08-18 20:24:00 · 590 阅读 · 0 评论 -
Android全部权限
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android.permissio转载 2015-09-07 19:32:13 · 463 阅读 · 0 评论 -
15/9/7/SharePreference/内部存储/外部存储
SharePreference内部存储外部存储SharePreference通过键值对的形式保存简单、私有的数据 /*** * 内部存储 * 该方法会在手机的私有内存中创建一个文件夹,名称为shared_prefs,里面会生成xml文件自动生成键值对 * getSharedPreferences方法可以生成指定的xml文件命名 * getPreferences原创 2015-09-07 19:25:34 · 663 阅读 · 0 评论 -
15/9/7/Fragment与ViewPager结合
Fragment与ViewPager结合1.首先在布局中添加一个ViewPager,然后在MainActivity通过FindViewById找到它 2.创建一个Adapter继承于FragmentPagerAdapter,在里面创建一个Fragment的List,在构造器里添加这个list 3.在MainActivity中同样声明一个Fragment的list将创建的几个Fragment类创建原创 2015-09-07 18:35:34 · 423 阅读 · 0 评论 -
2015/8/17/安卓环境的搭建/adb is down问题
eclipse环境的搭建与工程分析 1.eclipse的环境搭建最好是选择合成包,这样的话就可以减少因为adt的问题而带来的麻烦,或者其他不兼容的问题 2.文件夹src:存放java代码的地方 3.文件夹gen:在项目中添加的任何资源都会在其中生成一个相应的资源id 4.文件夹assets:主要可以存放一些随程序打包的文件,在你的程序运行时可以动态读取到这些文件的内容 5.文件夹bin:主原创 2015-08-17 19:32:28 · 537 阅读 · 0 评论 -
Android Studio快捷键
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代码Ctrl+空格 代码提示Ctr转载 2015-08-28 09:46:43 · 445 阅读 · 0 评论 -
15/8/28/自定义AlterDialog/DatePickerDialog/TimePickerDialog/PopupWindows/Notification
自定义AlterDialogDatePickerDialogTimePickerDialogNotificationPopupWindows自定义的AlterDialog1.自定义ALterDialog需要自定义布局,并且通过getLayoutInflater找到该布局,添加一个自定义的View,然后就填写内容 public void showDialogZidingyi() {原创 2015-08-28 20:30:10 · 571 阅读 · 0 评论 -
15/8/27/默认和自定义Toast/简单、多选项、单选、多选AlterDialog
ToastAlterDialogToast分为默认的和自定义布局的Toast1.Toast是独立, 不依赖于Activity,但是不能对他进行操作,因此通常用于提示信息, 2.默认的Toast比较简单其代码如下: Toast toast=Toast.makeText(getApplicationContext(),"恭喜你中奖了",Toast.LENGTH_LONG);原创 2015-08-27 19:31:22 · 641 阅读 · 0 评论 -
8/26/GridView/AutoCompleteTextView/Gallery/Spinner/ExpandableListView
GridViewAutoCompleteTextViewGallerySpinnerExpandableListViewGridView显示方式是网格显示,实现方法和ListView基本相同一:实现GridView的方法步骤 1.在一个布局上创建一个GridView,添加上id 2.创建一个新的布局,用于数据显示的格式 3.创建一个数据Class,添加数据类型,同时构建构造器 4.创建一个C原创 2015-08-26 19:33:05 · 586 阅读 · 0 评论 -
8/25/自定义Adapter缓存与时间优化/ListView、checkBox点击监听/addHeaderView/addFootView
自定义Adapter缓存与时间优化ListView、checkBox点击监听addHeaderView与addFootView自定义Adapter中的需要注意的地方1.首先看昨天的写的代码 public View getView(int position, View convertView, ViewGroup parent) { View view=mInflater.inflat原创 2015-08-25 19:27:03 · 694 阅读 · 0 评论 -
2015/8/24/checkBox/imageView/ArrayAdapter/SimpleAdapter/自定义Adapter
checkBoximageViewArrayAdapterSimpleAdaptercheckBox1.checkBox比较简单,一般用于多属性的选择,例如一个人的爱好有好多种(打篮球,跑步,打游戏等),这种情况下就不用RadioButton了,就用checkBox 2.下面代码是checBox的一般应用<LinearLayout android:layout_width="mat原创 2015-08-24 20:30:16 · 603 阅读 · 0 评论 -
2015/8/19/FramLayout/TableLayout/AbsoluteLayout
FrameLayoutTableLayoutAbsoluteLayoutFrameLayout1.FrameLayout最重要的一点是可以叠加 2.FramLayout中android:visibility=”“;有三种属性分别是gone(消失)、visible(默认为可见的)、invisible(不可见但是任然占用位置)<?xml version="1.0" encoding="utf-8"?>原创 2015-08-19 19:35:33 · 465 阅读 · 0 评论 -
2015/8/19/横、竖、满屏/消除标题、标题栏/startActivityForResult(启动带有返回值的intent)/Intent
横屏、竖屏、满屏消除标题、标题栏startActivityForResult一横屏、竖屏、满屏1.如果代码中没有写有关横屏或者竖屏的代码是默认为可以根据手机的旋转来自动调整横屏或者竖屏 2.如果在manifest的Activity中添加代码 android:screenOrientation="portrait"那么显示方式就一直为竖屏,不会因为手机的调整而调整,一般程序开发中很少用到 3.如果原创 2015-08-19 20:24:40 · 967 阅读 · 0 评论