Android初级
文章平均质量分 60
呼吸的蜗牛
去奋斗,去旅行!
算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。
展开
-
android中的启动模式
由于以前的出心大意,一直没太弄懂,android的启动模式,或者说当时似懂非懂,真正用起来,却发现不是那么回事。 关于启动模式的设置,我们可以在manifest.xml中对activity进行配置。设置launchMode就可以配置相应的启动模式了。 1、standard这种是默认的启动模式,当我们每打开一个activity,都会添加这个activity实例到任务栈原创 2015-11-12 00:52:15 · 382 阅读 · 0 评论 -
TextView的一些小技巧
1、字体加粗android:textStyle="bold"原创 2015-12-14 14:04:31 · 538 阅读 · 0 评论 -
RecycleView的使用
前段时间看到很多人说,可以用RecycleView来替代ListView、GridView这些控件了。所以也试着在项目中替代着用了一些。效果还可以,不过还有一些问题,一是在滑动的时候不是很流畅,二是listview里面的很多addheaderview这些都不支持,需要自己定义,也是醉了。尝尝鲜就好,不建议完全替换。 首先在使用之前,我们需要在app下的build.gradle中添原创 2015-12-17 11:56:05 · 1082 阅读 · 0 评论 -
沉浸式状态栏
最近变色龙顶栏到处都是。所以也跟着实现了一下。其原理也比较简单: 1、在manifest文件中将application:theme改为Theme.AppCompat.Light.NoActionBar 2、定义一个toobar的布局,并设置android:fitsSystemWindows这个属性为true,这个主要是给状态栏留空间的,如果不设置,系统的状态栏就会和你的t转载 2016-01-05 16:37:28 · 714 阅读 · 0 评论 -
DrawerLayout的使用
DrawerLayout翻译过来就是抽屉布局,网易云音乐和知乎首页都是采用的这种布局。可以简单实现侧滑菜单的功能。 在使用之前需要在Build.gald中加入compile'com.android.support:design:23.1.1' 在布局中的使用:xml version="1.0" encoding="utf-8"?>android.supp原创 2016-01-06 19:00:06 · 534 阅读 · 0 评论 -
viewpager显示多页,左右翻页显示动画
最近因为公司项目需要。要在一个页面中显示1个主页面,两边分别显示其他页面的一部分。效果类似下图这样: 想了一下用viewpager写了个简单的demo,贴出来以供参考。 首先因为我们看到这这个页面中显示了3个分页。所以我们首先需要解决的就是,怎么才能在viewpager中显示多页的问题。 这里需要在根部局加入2个属性:an原创 2015-12-22 18:14:55 · 4136 阅读 · 2 评论 -
MediaPlayer简介
一、MediaPlay的几种状态: 正常情况经历的状态: 1、闲置状态:当调用Reset()或调用new创建对象时,就处于该状态。 2、结束状态:当调用release()时就处于结束状态。当我们不再需要使用MediaPlayer时就应该调用该方法,释放掉软硬件资源。 3、初始化状态:该状态是当我们调用了setDataResource,表示我们已经设置好了需要播放的资转载 2016-01-08 14:17:07 · 934 阅读 · 0 评论 -
Fragment介绍:
很久之前学的Fragment的生命周期,都已经忘记了,所以特意复习一下。这是android官方API给出的解释: 然后再看一下执行的日志: 正常加载的时候: onAttach:官方给出的解释是说当fragment和activity产生关联的时候调用 onCreate:和activity一样,是当fragment创建时调用原创 2015-11-01 18:02:27 · 547 阅读 · 0 评论 -
webview的使用
在webview中加载HTML页面的时候,我们往往需要捕捉里面的点击事件。在这里我推荐2种方式 1、通过服务器给客户端返回的json数据来判断,是哪一个事件: mWebView.setWebViewClient(new CustomWebViewClient()); //在这里实现跳转等操作 private class CustomW原创 2015-06-18 18:10:46 · 665 阅读 · 0 评论 -
android中的倒计时
在Android中比如获取验证码的时候,都会有一个倒计时的按钮,提示多少秒之后重发。这种情况我们就可以使用CountDownTimer这个类,来进行倒计时的操作。 class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long millisInFuture, long count原创 2016-01-15 11:44:50 · 775 阅读 · 0 评论 -
activity中fragment不能全屏的问题
今天开发的时候遇到fragment添加到activity中,不能全屏显示的问题。在网上找了很多资料,都没有很好的解决。 后来就问了一下公司开发的前辈,找到了一种方式可以完美解决。就是在fragment的oncreateview方法中添加如下代码:view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayo原创 2015-11-26 18:31:53 · 6506 阅读 · 1 评论 -
android中的广播接收器
android中的广播机制,是四大组件之一。广播接收器的作用就是监听所注册的广播,并在接收到广播时做响应的操作。 广播接收器的使用步骤: 1、创建广播接收者:public class NetworkBroadcast extends BroadcastReceiver { @Override public void onReceive(Con原创 2015-11-21 00:24:43 · 671 阅读 · 0 评论 -
为ListView子视图添加动画
看书的时候,看到给viewgroup子控件添加动画,所以就稍稍研究了一下。拿listview来说,当我们需要给listview中的item添加动画效果的时候,就需要用到LayoutAnimationController这个类,通过名称我们就可以猜出来,该类是用于给layout添加动画的控制器。使用方式如下: listView= (ListView) findViewById(原创 2015-11-13 16:46:49 · 1070 阅读 · 0 评论 -
Progressbar的使用
android中使用水平Progressbar时,需要设置Progressbar的样式为水平。<ProgressBar android:id="@+id/progress" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/progress原创 2015-11-13 00:40:26 · 907 阅读 · 0 评论 -
android中的Dialog的使用
//一般弹窗 /* DialogInterface.OnClickListener clickListener=new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which)原创 2015-11-14 00:01:04 · 574 阅读 · 0 评论 -
ListView 滑动footerview不断拉长的解决方法
ListView 滑动footerview不断拉长的解决方法public void addView(ListView listView,View headerView,View footerView) { if(listView.getFooterViewsCount()==0&&footerView!=null) { listVie原创 2015-10-30 19:53:23 · 1416 阅读 · 0 评论 -
Activity的生命周期
最近做项目的时候,感觉涉及到activity的生命周期的时候,自己做的都不是很好。所以打算重新复习一下activity的生命周期。下面是我的demo代码:public class MainActivity extends Activity { private String TAG="MainActivity"; @Override protected void onCreate(B原创 2015-07-01 10:18:40 · 504 阅读 · 0 评论 -
android布局的优化
1、尽量使用RelativeLayout来替换LinearLayout,相比之下LinearLayout所消耗的内存会更多。 2、尽量减少layout的层级。 3、当需要重复使用一个布局的时候,使用include来引用布局。 可参考:点击打开链接原创 2015-11-18 18:51:25 · 405 阅读 · 0 评论 -
关于图片加载优化的小技巧
关于图片加载出现OOM异常,是我们Android开发人员经常需要考虑的问题。最近把公司项目中用到的优化小技巧做一个总结出来,方便以后使用。 1、尽量压缩图片占用内存。 在使用Bitmap.Config这个变量的时候,它里面会有4个枚举值,分别是: Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点原创 2015-11-18 17:07:25 · 924 阅读 · 0 评论 -
android中的通知
因为很长时间没用过通知了,客户端的通知也一直不是自己在负责的,所以想着复习一下。真正写了之后才发现android的通知已经有了很大的变化。 //获取通知管理器 notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); RemoteView原创 2015-11-24 23:49:29 · 496 阅读 · 0 评论 -
使用代码构建布局及设置常用属性
很多时候,由于项目的原因,我们必须要通过代码来构建布局。而很多控件的属性,在用代码构建的时候,一般不是很方便。所以为了日后方便复习,特来把代码写过的布局整理一下以供参考。 先来看一个布局: RelativeLayout relativeLayout=new RelativeLayout(getActivity());原创 2015-12-11 18:33:36 · 599 阅读 · 0 评论 -
android中MVP的理解和实例
这段时间总是被问到android的架构和设计模式。所以研究了一些关于MVC和MVP的知识点。 首先MVC我们都知道,就是模型层(Model)、视图层(View)、控制层(Controller)的缩写。在android中一般我们对数据的增删改查,还有实体类就属于M,layout中的所有xml文件就属于V,所有显示layout的,比如Activity、Fragment等都属于C。原创 2016-02-25 20:52:33 · 1467 阅读 · 0 评论 -
WebView的使用
webView= (WebView) findViewById(R.id.webview); titleTV= (TextView) findViewById(R.id.title); iconIV= (ImageView) findViewById(R.id.icon); webView.loadUrl(url); WebSetti原创 2016-03-12 18:44:15 · 557 阅读 · 0 评论 -
Android分包MultiDex原理详解
MultiDex的产生背景 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。但是在早期的Android系统中,DexOpt有一个问题,D转载 2016-03-14 14:32:49 · 970 阅读 · 0 评论 -
android中Menu的使用
Android ActionBar应用实战,高仿微信主界面的设计选项菜单OptionsMenu、上下文菜单ContextMenu、子菜单SubMenu转载 2016-05-07 17:52:06 · 502 阅读 · 0 评论 -
Notification的使用
public void Click(View view) { switch (view.getId()) { case R.id.text1: count++; notification = new Notification.Builder(this).原创 2016-05-18 17:11:07 · 562 阅读 · 0 评论 -
启动Activity的各种FLAG介绍
Intent intent = new Intent(SecondActivity.this,MainActivity.class); /** * 如果在调用Context.startActivity时传递这个标记, * 将会导致任何用来放置该activity的已经存在的task里面的已经存在的ac转载 2016-06-01 17:23:22 · 789 阅读 · 0 评论 -
对于Picasso的封装和优化方案
http://www.jianshu.com/p/093ca3c1447dhttp://www.jianshu.com/p/6b746c904a49http://www.jianshu.com/p/b3142432f4e3转载 2016-05-13 17:43:47 · 2034 阅读 · 0 评论 -
android判断网络连接状态
/** * 检测网络状态 * http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html * @return */ public boolean hasIntener() { ConnectivityManager cm = (ConnectivityManager)转载 2016-05-09 16:01:24 · 673 阅读 · 0 评论 -
键盘不弹出的问题
获取焦点有两种方法:1.Java code?1EditText.requestFoucus()2.Java code?123 自动弹出软键盘有两转载 2016-05-20 17:45:01 · 768 阅读 · 0 评论 -
java中常用的设计模式
1. Singleton(单例模式)作用: 保证在Java应用程序中,一个类Class只有一个实例存在。好处:由于单例模式在内存中只有一个实例,减少了内存开销。 单例模式可以避免对资源的多重占用,例如一个写文件时,由于只有一个实例存在内存中,避免对同一个资源文件的同时写操作。 单例模式可以再系统设置全局的访问点,优化和共享资源访问转载 2016-06-28 17:12:39 · 614 阅读 · 0 评论 -
Android属性动画的基本使用
android系统中目前主要支持3种动画:帧动画、补间动画、属性动画。帧动画就是将多张图片集,按照一定的顺序快速播放,就形成了动画。补间动画主要包含:缩放、渐变、平移、旋转这四种动画。但缺点在于,只是改变了控件本身的形状、位置等外部属性,点击事件等属性,仍然没有改变。所以就有了属性动画,可以说是对补间动画的增强版,不仅修正了补间动画的缺陷,还支持更多的动画。 textView1.setOnCl原创 2016-06-15 16:07:45 · 524 阅读 · 0 评论 -
RecyclerView实现流式布局并添加headerview、footerview
之所以写这篇文章,是因为今天在面试的时候,被问到了。当然早在1年前,我就在项目中大量使用了RecyclerView。后来换了新的公司之后,就基本没怎么用了。然后问了怎么添加header和footer,勉强答出来了。结果人家加了一句,如果LayoutManager是流式布局,或者GridLayoutManager的话,header会出现留白的问题,怎么处理啦?这个还真没用过,所以就干脆研究了一下。原创 2016-09-01 21:42:08 · 1429 阅读 · 0 评论 -
使用Spinner实现省市三级联动
首先看一下xml文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" an原创 2016-05-07 17:04:00 · 2173 阅读 · 2 评论 -
android关于轮询的一种解决方案
前段时间,由于公司项目中某个功能需要用到轮询的操作,所以参考了网上的一些资料,做了一个demo。主要方案是:AlarmManager + BroadcastReceiver + Service 首选需要获取AlarmManager,并包装要执行的服务: /** * 开始轮询 */ public static void startPolling原创 2016-05-07 11:40:40 · 5618 阅读 · 2 评论 -
android中handler的使用
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar= (ProgressBar) findViewById(R.id.pr原创 2016-03-14 20:28:42 · 531 阅读 · 0 评论 -
git使用
git的配置和第一次提交到仓库 git clone url 从远程仓库克隆项目到本地 ssh keygen 生成ssh key git commit 提交代码到本地仓库 git push origin master 提交本地更改到远程仓库 git push origin master 更新远程仓库的更改,到本地原创 2016-04-14 10:26:43 · 422 阅读 · 0 评论 -
控制父控件不可拦截子控件事件
requestDisallowInterceptTouchEvent(true)防止viewpager和子view冲突原创 2016-05-12 17:02:52 · 3588 阅读 · 0 评论 -
APP被kill后重新激活的几种方案
严重声明:除非万不得已,一定不要滥用,一定不要滥用,一定不要滥用!否则非常影响用户体验,我自己也觉得有些流氓,但是由于我们应用的特殊性,一旦被销毁,非常影响用户使用,望各位同行能引以为戒! 第一种:在Application监听此方法,onTrimMemory @Override public void onTrimMemory(int level) {原创 2016-05-25 16:30:28 · 3521 阅读 · 0 评论 -
SQLite 的使用(一)
最近项目不是很忙,刚好在看代码的时候,看到了数据库这一块,感觉好长时间没用,也都忘记了,也就顺便复习一下。 由于android中google给我们提供了SQLiteOpenHelper这个类来帮助我们操作数据库,所以我们第一步自然是要继承这个类:public class DBHtlper extends SQLiteOpenHelper { public DBHtlper原创 2016-05-26 18:19:43 · 573 阅读 · 0 评论