- 博客(139)
- 资源 (3)
- 问答 (2)
- 收藏
- 关注
原创 使用WebView时的一些坑(图片拼接、不显示、shouldOverrideUrlLoading正确用法)
开始学习WebView时感觉很简单,就是拿到控件后给他个URL就OK啦,但是在项目中真正用的时候,会有各种问题。问题1:如果URL的内容是一个个图片拼接的,会出现图片折叠的现象 原因:没有对WebView进行适配,只需要几行代码就OK/***LayoutAlgorithm是一个枚举,用来控制html的布局,总共有三种类型:*NORMAL:正常显示,没有渲染变化。*SINGLE_COLUMN:
2016-10-25 15:16:38 3752
原创 android与html5交互
现在app中嵌套html5的用法相当的普及,但是对于她们之间的交互却又感到很模糊,接下来从两方面讲解一下,自己动手写就会明白很多。一、点击html5页面中的按钮,调用android中的方法1、android页面 webView = (WebView) findViewById(R.id.webview); //设置webView的一些属性 WebSettings webSettings = we
2016-10-14 18:46:44 4229
转载 DataBinding详细使用文档
Android新推出了一个官方的数据绑定框架Data Binding Library,既然是官方推出的新玩意,我们就有必要了解一下Android新带来的数据绑定框架,等到该框架推出正式版的时候,我们就可以快速地运用到项目中去。数据绑定框架给我们带来了很大的方便性,以前我们可能需要在Activity里写很多的findViewById,烦人的代码也增加了我们代码的耦合性,现在我们马上就可以抛弃那些fin
2016-10-12 11:35:19 4505
原创 ButterKnife 8.1.0 入门详解
先不管他怎么用, 我们先把他弄到我们的项目里,自己学的时候费了很大的功夫,现在参考一些大神的文章,加上自己学习遇到的问题来记录一下:1、在project的build.gradle中添加这么一句话//依赖包的定义dependencies { classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.neenbe
2016-10-09 18:16:01 3426
原创 ListView的优化、两种复用View的方式
方式一:1、使ViewHolder继承LinearLayout2、在ViewHolder中findViewById3、向外暴露一个方法用来赋值个人觉得:使用这种方式更有利于为item中的某个控件设置点击事件。public class ListViewAdapter1 extends AppCompatActivity { private ListView mListView; priv
2016-10-08 15:03:07 3465
转载 RecyclerView和ScrollView嵌套使用
scrollview 嵌套recyclerview 时,recyclerview不显示这就需要我们自己计算recyclerview的高度,比如: ViewGroup.LayoutParams mParams = recyclerView.getLayoutParams(); mParams.height = (CommonUtils.getScreenWidthPX(getActiv
2016-09-30 15:51:53 861
原创 Intent、Bundle、onActivityResult传值
一、Intent先介绍一下Intent:Intent意图:指定想要干嘛意图的功能:激活组件、携带数据意图的分类: 1)显式意图:指定要启动的目标组件的意图2)隐式意图:没有指定启动目标组件的意图,通过匹配action、category、data来查找要启动的目标组件的意图。意图的应用场景:1)显式意图:一般应用在同一个应用程序中,用来激活组件,因为效率高2)隐式意图:可以应用在同一应用也可以
2016-09-30 15:26:49 934
原创 android单选按钮(RadioButton)、复选框(CheckBox)
一、单选按钮相互排斥的事件使用该控件,一组相互互斥的事件放到一个组内,及RadioGroup。<RadioGroup android:id="@+id/sex" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton
2016-09-29 16:56:46 1730
原创 android微信支付详解与坑
要想在自己的APP中实现APP支付必须申请开通支付功能,这些按着文档来吧,我还是直接说android中的问题吧。一、签名一定要在开放平台为自己的APP配置正确的包名和签名(签名:将APP打一个正式环境的包,然后在微信开放平台下载签名工具进行签名)。二、打包测试和微信的第三方登录一样,必须要打正式包,不是debug的,来进行测试,这样就没有办法调试了,感觉很不爽。所以提供一个办法来拯救一下嘿嘿:在bu
2016-09-23 11:39:14 12482
原创 CardView的详细使用
CardView是android5. 0出现的,效果类似于带有阴影边框的圆角卡片。可以把它看成FrameLayout,这样使用起来就清晰了很多吧。它既可以独立使用也可以是ListView、GradView、RecyclerView等的item布局。一、使用它要现在build.gradle中添加依赖 compile 'com.android.support:cardview-v7:23.4.0'二、接
2016-09-22 09:36:56 7503 1
原创 自定义圆角带边框ImageView
最近项目改版需要带阴影的圆角矩形,最后只实现了带边框的圆角矩形,阴影需要渐变,由于宝宝经验有限,只能参考被人的实现成了这样的。有路过的大神可以留下脚印,嘿嘿import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Col
2016-09-21 10:02:15 2860
转载 不写代码,快速实现px转换成dp
有很多朋友在实际的工作中,会遇到设计同事给了一张设计图,上面只有px标注的距离和尺寸。产品看到设计稿后,就拿给iOS和Android的开发,说就按这个做。iOS开发可能还好,虽然也有9种屏幕,但那毕竟是两只手数的来的。但是Android开发可能是心中无数只草泥马奔腾 + 一脸懵逼。。其实我们只要把px转换成dp就可以了,两步走:第1步:确认设计稿中的屏幕dpi是多少 第2步:根据dpi,将px值转
2016-09-21 09:46:56 1867
原创 Android layer-list的属性和使用详解(阴影、边框效果)
layer-list用于多个图层堆叠,可以完成阴影效果<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!--最底层的View--> <item > <shape android:shape="re
2016-09-09 10:23:34 6146
转载 ScrollView下拉刷新
public class PullScrollView extends RelativeLayout { public PullScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); }
2016-09-08 22:34:37 529
原创 判断控件是否在屏幕的显示范围内
判断imageView是否在屏幕上显示int width,height;Point p=new Point();getWindowManager().getDefaultDisplay().getSize(p);width=p.x;height=p.y;Rect rect=new Rect(0,0,width,height ); if(imageView.getLocalVisibleRec
2016-09-05 19:44:40 3675 1
原创 ScrollView返回到顶部效果
好多的时候,需求滑倒某一位置,显示返回顶部的按钮,点击按钮,滑到顶部。但是ScrollView提供的onScrollChanged方法没有向外暴露,所以我们就要重写它。/定义接口public interface ScrollViewListener { void onScrollChanged(ObservableScrollView scrollView, int x, int y, in
2016-09-05 14:41:56 798
原创 ScrollView嵌套ViewPager不显示问题解决方案
1、方案一:给ViewPager设置固定的高度2、方案二:自定义ViewPagerpublic class ChildViewPager extends ViewPager { public ChildViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public C
2016-09-05 14:32:02 2866
原创 ViewPager轮播图
目前很多的电商类的APP首页都有这样的轮播图,所以在此提供本人的demo1、先看看它的布局文件这里还是挺简单的,就一个ViewPager和一个LinearLayout,LinearLayout是用来放那些小点的(指示器),这里要给它id这样方便对他进行操作。<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="ht
2016-09-01 10:36:05 364
转载 Git命令速查表
名词master: 默认开发分支 origin: 默认远程版本库 Index / Stage:暂存区 Workspace:工作区 Repository:仓库区(或本地仓库) Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代
2016-08-30 18:07:44 336
原创 使用Glide加载、缓存图片、Gif、解决背景出现浅绿色、GlideModules冲突
之前一直使用Volley ImageLoader、或者Picasso,无意间发现Glide,觉得真的是棒棒的。1、和其他的一样在Module的build.gradle中添加依赖compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.android.support:support-v4:23.3.0'都可以看到我不只是添加了一个依赖,还
2016-08-23 15:31:57 10860 2
原创 时间选择器DatePicker与TimePicker
使用时间选择器总比一个个的手动输入时间的用户体验好,实际中的应用也挺多的。先看看张什么样吧:以上两种是以对话框的方式显示的,看着也比较舒服,还有一种是直接粘贴在界面上的(图略了哈)接下来分别介绍:public class MainActivity extends AppCompatActivity { private DatePicker mDatePicker; private Ti
2016-08-16 17:05:21 838
原创 android动画Animation
首先我们要知道一共有哪几种动画,这个面试有可能被问哦^_^。 变换动画(透明度、缩放、平移、旋转)、逐帧动画、布局动画和属性动画一、变换动画我们可以通过XML文件设置动画也可以通过java代码设置动画,当动画的状态是动态获取的,就是比较灵活的时候,我们选java代码的,否则选择XML的更加方便。1、透明度1)通过xml文件设置alphademo.xml(在res/anim文件夹下)<?xm
2016-08-05 18:31:25 604
原创 android调用系统相机和相册,图片裁剪
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { final AlertDialog.Builder builder = new Alert
2016-08-04 17:05:04 493
原创 自定义图形在drawable文件夹下
很多时候我们会用到自定义的图形,如圆角的按钮,或者给按钮加一个带有颜色的边缘等等。放在res/drawable下,是xml文件1、图形填充颜色:solid<solid android:color="颜色值"/>2、边界的宽度和颜色:stroke<stroke android:width="宽度值" android:color="颜色值"/>3、圆角的大小:corners<corner
2016-08-04 15:14:27 852
原创 android中数据的存储方式(SQLite)
四、SQLite数据库存储以该种方式存储的数据也不能被其他的应用访问。接下来我们就来看看是如何实现的吧1、写一个类继承SQLiteOpenHelper,并重写它的onCreate()方法和onUpgrade()方法public class MySqlDb extends SQLiteOpenHelper { private static final String DB_NAME = "mydb
2016-08-04 12:17:17 383
原创 android中数据的存储方式(Internal Storage)
二、Internal Storage(内部存储)存储应用私有的数据在设备的内存中,其他应用不能访问,当应用卸载,数据也被移除。1、向内存中写数据的步骤 1)调用openFileOutput(文件名称,文件的操作模式)方法,返回FileOutputStream.对象。 2)使用write()方法向文件中写数据 3)使用close()方法关闭流2、通过小例子来理解一下publi
2016-08-04 11:15:57 1303
原创 android中数据的存储方式(ShardPreferences)
API文档里面介绍,android的存储方式有五种,选择哪种存储方式要根据具体的需求来选择;比如是否允许其他的应用访问你存储的数据,存储数据的大小等。接下来先说说都有哪几种存储方式,然后在一一介绍。一、Shared Preferences以键值对的方式存储数据。以该种方式存储的数据,当应用退出数据不消失。1、获取SharedPreferences对象的方法1)getSharedPreferences
2016-08-03 20:32:50 1139 2
原创 Service的子类IntentService(三)
1、简介它使用工作线程逐一处理所有启动请求。如果不要求服务同时处理多个请求,这是最好的选择。只需实现 onHandleIntent() 方法即可,该方法会接收每个启动请求的 Intent,一个一个的在后台执行。2、IntentService与Service之间的不同 1)Service要处理耗时操作需要自己启动一个工作线程,如果启动了多个工作线程来处理相关事务的话,给线程之间不能很好的控制;而
2016-08-03 18:46:42 525
原创 Service与Activity之间的通讯(二)
开启服务是不能使Service和Activity之间通讯的,所以只能通过绑定服务完成。有三种方式来创建绑定服务,接下来一个一个的介绍:一、扩展 Binder 类此方法只有在客户端和服务位于同一应用和进程内这一最常见的情况下方才有效。1、在服务中,创建一个可满足下列任一要求的 Binder 实例: 1)包含客户端可调用的公共方法 2)返回当前 Service 实例,其中包含客户端可调用的
2016-08-03 17:33:49 390
原创 Service简介与生命周期讲解(一)
一、Service的介绍Service 是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。服务分两种启动和绑定:1、启动服务:
2016-08-03 16:19:48 3607
原创 android面试题
1、屏幕适配1)首先了解几个重要的概念 A、屏幕尺寸:屏幕对角线的长度,1英寸=2.54cm B、屏幕分辨率:横纵向上像素点数,单位px C、屏幕像素密度:每英寸上像素点的个数,单位dpi,分辨率越高,屏幕像素密度越大 D、dip(dp)、密度无关像素(规定160dp为基准,即1dp=1px、若320dp为1dp=2px)2)解决方案A、支持各种屏幕尺寸 a、
2016-08-02 18:02:07 313
原创 Retrofit使用详解(学习资料提供)
先提供一些我认为比较好的几个学习Retrofit的网址:1:先提供一个可以将json直接生成java实体类的东东吧:http://www.jsonschema2pojo.org/2:接下来就是一些资料了,结合着去学习:1)https://github.com/hehonghui/android-tech-frontier/tree/master/issue-7/Retrofit%E5%BC%80%E
2016-08-02 17:05:12 333
原创 ViewPager的使用详解
1、使用背景左右滑动显示不同的页面或者数据时使用的2、ViewPager是V4包下的所以使用的时候要使用完整的包名+类名的方式 <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout
2016-08-01 23:36:32 383
原创 ListView的多套布局
先看看效果图,手画的哈有点丑嘿嘿大概就是这个样式,我就拿两种布局的为例,掌握住重点,多少都没有问题嘿嘿!1、简单的理解就是有几种不同的布局就要有几个相应的xml文件,所以先上布局文件喽:layout_item_type1:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.andro
2016-08-01 15:36:36 644
原创 QQ、新浪、微信使用友盟第三方登录需注意(5.0之前)
1、先说测试的时候:QQ和微信必须使用正式的包,不能使用debug环境的如果不使用正式的包会出现如下情况:1)微信:点击没有反应,不执行onComplete(我测试时是这样的,具体啥原因我也不知道,又路过的大神帮忙解决一下哈嘿嘿)2)QQ:当QQ提示该应用版本较旧……(错误码为100044)使用android studio打正式包去哪找呢然后将得到的apk文件装到手机中然后测试QQ和微信的登录功能,
2016-07-29 15:38:18 1570
原创 Gson解析和json解析
json数据的简单介绍:json数据是一种轻量级的数据交换格式,一键值对的形式表现的。用[]括起来的可以理解为数组、用{}括起来的可以理解为对象。例如://对象{ "id":123, "username":"ws", "password":"admin", "phone":"15333333333" } //数组[{ "id":123, "username":"ws",
2016-07-22 10:56:23 548
原创 BadgeView微信消息数字提醒
目前这个应用十分火,所以也琢磨了一下,可以自定义去实现,但是后来发现了个开源的东东,挺好用的,所以就拿来用了。使用起来特别简单只需要四步就能搞定了:**1、找到要显示数字的控件2、实例化BadgeView,并设置参数3、设置BadgeView的相关属性4、显示BadgeView**//1、找到控件,mLinearLayout = (LinearLayout) findViewById(R.id.l
2016-07-21 18:34:36 1408
原创 CountDownTimer手机短信计时器的使用
这个使用起来还是挺方便的,相比Handler而言,所以个人比较推荐使用这个。本文主要实现了倒计时的一个效果,具体发短信的代码没有实现。觉得使用CountDownTimer时要注意两点: 1、单位都是以毫秒为单位的 2、一定不要忘了start,否则没有效果接下来上代码了,一看就懂了 嘿嘿: //第一个参数为倒计时的时间,第二个参数为时间间隔(均以毫秒为单位) CountD
2016-07-21 17:57:26 618
原创 侧滑菜单NavigationView和SlidingMenu的使用
一、NavigationView使用1、NavigationView是android5.0推出的,所以要在相应Module的build.gradle中添加依赖compile 'com.android.support:design:23.4.0'2、xml文件<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.Drawer
2016-07-13 11:20:38 2341
原创 Toolbar使用详解
1、使用toolbar要注意去掉原有的actionbar否则会报异常,可以在style中直接进行修改(style.xml) <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPri
2016-07-13 10:18:57 1219
自定义View的时候,如何判断继承什么
2017-08-23
TabHost承载的Activity上放WebView 之后的tab中内容消失
2016-11-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人