最近的项目是一个与音乐相关的App,其中有一个功能:收藏喜欢的歌曲,在wifi的环境下自动下载。
考虑到音乐歌曲都是3、4Mb的小文件,断点下载的功能便不需要了。因此只需要实现一个特别轻量、简单的下载管理类,进行管理即可。
最初的思路便是任务队列,单线程顺序执行,一个文件接着一个文件进行下载。
之前看过AsyncTask的部分源码,其设计与我的想法类似,于是便借鉴着AsyncTask的源码,实现了一个特别简单、轻量的下载管理类。
more >>那是一座悲欢离合聚集的楼。
最近的项目是一个与音乐相关的App,其中有一个功能:收藏喜欢的歌曲,在wifi的环境下自动下载。
考虑到音乐歌曲都是3、4Mb的小文件,断点下载的功能便不需要了。因此只需要实现一个特别轻量、简单的下载管理类,进行管理即可。
最初的思路便是任务队列,单线程顺序执行,一个文件接着一个文件进行下载。
之前看过AsyncTask的部分源码,其设计与我的想法类似,于是便借鉴着AsyncTask的源码,实现了一个特别简单、轻量的下载管理类。
more >>项目开发中,有一个这样的需求:
在个人主页里会有12张图片的背景墙。这12张图片由服务器返回,会不定时刷新。
起初,自己的实现思路是:xml直接定义12个ImageView,然后在接收到图片路径后,再进行异步加载。
显然,这种方法是肯定可以的,但是却显得不“优雅”。而且后续可能会对这整个背景墙有个缩放的动画之类的,那么再实现起来便会比较复杂了。
之后,我想到了GridView,显然也是可以的,在得到图片路径后传入到Adapter中即可。比起方案一稍微“优雅”些,但是也是很难将这个背景墙当成一个整体,进行将来可能会添加的动画特效需求。
最后,我想到,既然要当成一整个整体,那么自定义View或许是个不错的办法。
more >>大年初十,相信许多人都已经过完年,在上班的路上或者已经上班了。在这里跟大家说一声:新年好~
新年新气象,今天打算写一篇关于Android新特性:Material Design
的文章。Material Design作为android 5.0的重头戏,说是新特性,但是其实已经算不上“新”了,毕竟android 6.0都出来了呢。
情人节刚过,我便以“秀恩爱”为主题,做一个新特性的使用例子。废话少说,下面开撸。
使用新特性需要添加依赖:1
2
3compile 'com.android.support:design:23.0.1'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
Facebook 在 React.js Conf 2015 大会上推出了基于 JavaScript 的开源框架 React Native。React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。
React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React. The focus of React Native is on developer efficiency across all the platforms you care about — learn once, write anywhere. Facebook uses React Native in multiple production apps and will continue investing in React Native.
React Native 使你能够使用基于 JavaScript 和 React 一致的开发体验在本地平台上构建世界一流的应用程序体验。React Native 把重点放在所有开发人员关心的平台的开发效率上——开发者只需学习一种语言就能轻易为任何平台高效地编写代码。Facebook 在多个应用程序产品中使用了 React Native,并将继续为 React Native 投资。
对于不太了解React Native是什么以及Facebook为什么要创建React Native,可以先看看这篇博客。
Facebook 于 2015 年 9 月 15 日发布了 React Native for Android, 把 Web 和原生平台的 JavaScript 开发技术扩展到了 Google 的流行移动平台–Android。
最近项目技术负责人说可能以后我们也会使用这套框架进行App开发,所以便预先学习一下,顺便做下笔记,分享给大家。
more >>最近一直在学习Hybrid开发,如何在H5页面调用Android原生接口,并返回值,以及回调。学习了一段时间,总算是有点收获,效果也做出来了。于是写下这篇博客,记录一下。
本文中我以2个接口示例,来进行讲解。第1个示例很简单,就是调用接口,返回登录Token;第2个示例是H5调用接口,弹出Android原生界面进行图片选择,选择完之后返回选择图片的Base64格式的字符串。然后H5页面接收返回的字符串,回调进行图片显示。
首先,讲解一下Base64。图片也是一个文件,可以通过Base64返回这个文件的Base64字符串,这个字符串可以直接放到H5的img标签进行显示。
more >>最近的项目中,需要用到Notification。上一下效果图:
首先,学习一下关于Notification的基本知识。
状态通知栏主要涉及到2个类: Notification 和 NotificationManager 。
Notification为通知信息类,它里面对应了通知栏的各个属性。
NotificationManager : 是状态栏通知的管理类,负责发通知、清除通知等操作。
注意:NotificationManager 是一个系统Service,必须通过 getSystemService(NOTIFICATION_SERVICE)方法来获取:1
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
自定义Notification大致分为以下几步:
下面结合代码进行说明。
more >>我们知道,现在App大致分为3类:Hybrid App
、Web App
、Native App
。Hybrid App兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”,市面上现在也有许多Hybrid App。
最近做的项目,也会使用到Hybrid开发,之前没做过的。所以今天初步学习了一下,记录一下学习心得。
首先,新建一个新的AS module,然后新建assets目录,至于src/main文件夹下。如下图:
我们再assets目录下,新建一个hello.html,编辑内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14<html>
<head>
<script>
function hello() {
document.getElementById("demo").innerHTML = "Hello Hybrid!";
}
</script>
</head>
<body>
<div>
<a href="#" id="demo" onclick="window.demo.clickOnAndroid()">Click Me</a>
</div>
</body>
</html>
一个很简单的html页面。
more >>最近的项目中需要用到类似QQ空间那样的图片浏览功能,于是Google了一波,发现使用ViewPager与PhotoView即可实现。有了思路便开撸了。
首先,我们定义一个用于展示原图的Activity。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25public class ImageBrowseActivity extends Activity {
// ViewPager对象
private ViewPager mViewPager;
// 原图url路径List
private List<String> imagePath;
// 当前显示的位置
private int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_images_view);
// 获取参数
this.position = getIntent().getIntExtra("position", 0);
this.imagePath = getIntent().getStringArrayListExtra("imagePath");
mViewPager = (ViewPager) findViewById(R.id.images_view);
// 设置左右两列缓存的数目
mViewPager.setOffscreenPageLimit(2);
// 添加Adapter
PagerAdapter adapter = new ImageBrowseAdapter(this, imagePath);
mViewPager.setAdapter(adapter);
mViewPager.setCurrentItem(position);
}
}
本文主要结合Android Studio讲述一下.9图片的原理与使用。
在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开发的一种特殊的图片格式,它的好处在于可以用简单的方式把一张图片中哪些区域可以拉伸,哪些区域不可以拉伸设定好,同时可以把显示内容区域的位置标示清楚。
.9图片相比普通图片,在四条边会多出1px的空隙,我们在这1px的空隙中画上黑线,即可控制图片怎么拉伸,内容区域的位置。
讲解一下四条边的作用:
tag:
缺失模块。
1、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
2、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: true raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true