如何在Android中crebar 使用位图填充ImageLoader的释放位图的内存

import android.widget.ImageV
import com.nostra13.universalimageloader.core.ImageL
* 异步加载本地图片工具类
* @author tony
public class LoadLocalImageUtil {
private LoadLocalImageUtil() {
private static LoadLocalImageUtil instance = null;
public static synchronized LoadLocalImageUtil getInstance() {
if (instance == null) {
instance = new LoadLocalImageUtil();
* 从内存卡中异步加载本地图片
* @param uri
* @param imageView
public void displayFromSDCard(String uri, ImageView imageView) {
// String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
ImageLoader.getInstance().displayImage("file://" + uri, imageView);
* 从assets文件夹中异步加载图片
* @param imageName
图片名称,带后缀的,例如:1.png
* @param imageView
public void dispalyFromAssets(String imageName, ImageView imageView) {
// String imageUri = "assets://image.png"; // from assets
ImageLoader.getInstance().displayImage("assets://" + imageName,
imageView);
* 从drawable中异步加载本地图片
* @param imageId
* @param imageView
public void displayFromDrawable(int imageId, ImageView imageView) {
// String imageUri = "drawable://" + R.drawable. // from drawables
// (only images, non-9patch)
ImageLoader.getInstance().displayImage("drawable://" + imageId,
imageView);
* 从内容提提供者中抓取图片
public void displayFromContent(String uri, ImageView imageView) {
// String imageUri = "content://media/external/audio/albumart/13"; //
// from content provider
ImageLoader.getInstance().displayImage("content://" + uri, imageView);
阅读(...) 评论()从中,我们学习了Android-Universal-Image-Loader(以下简称UIL)中四个DisplayImage重载方法的使用,如果你还没有学习,最好先返回去看看,不然可能不理解这篇文章。在这篇文章中我们将主要探讨Android-Universal-Image-Loader的主要流程和这些流程相关的类的分析。
我们先了解一下UIL加载图片的流程(可以通过查看ImageLoader.displayImage(&)方法分析得出),如下图
从上图中,我们可以看出,UIL加载图片的一般流程是先判断内存中是否有对应的Bitmap,再判断磁盘(disk)中是否有,如果没有就从网络中加载。最后根据原先在UIL中的配置判断是否需要缓存Bitmap到内存或磁盘中。Bitmap加载完后,就对它进行解析,然后显示到特定的ImageView中。
有了对UIL对图片加载和处理流程的初步认识之后,我们就可以着手分析它的源代码了。先从ImageLoader.displayImage(...)入手,毕竟一切都因它而始。
public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options,
ImageLoadingListener listener, ImageLoadingProgressListener progressListener) {
//检查UIL的配置是否被初始化
checkConfiguration();
if (imageAware == null) {
throw new IllegalArgumentException(ERROR_WRONG_ARGUMENTS);
if (listener == null) {
listener = emptyL
if (options == null) {
options = configuration.defaultDisplayImageO
if (TextUtils.isEmpty(uri)) {
engine.cancelDisplayTaskFor(imageAware);
listener.onLoadingStarted(uri, imageAware.getWrappedView());
if (options.shouldShowImageForEmptyUri()) {
imageAware.setImageDrawable(options.getImageForEmptyUri(configuration.resources));
imageAware.setImageDrawable(null);
listener.onLoadingComplete(uri, imageAware.getWrappedView(), null);
//计算Bitmap的大小,以便后面解析图片时用
ImageSize targetSize = ImageSizeUtils.defineTargetSizeForView(imageAware, configuration.getMaxImageSize());
String memoryCacheKey = MemoryCacheUtils.generateKey(uri, targetSize);
engine.prepareDisplayTaskFor(imageAware, memoryCacheKey);
listener.onLoadingStarted(uri, imageAware.getWrappedView());
//Bitmap是否缓存在内存?
Bitmap bmp = configuration.memoryCache.get(memoryCacheKey);
if (bmp != null && !bmp.isRecycled()) {
L.d(LOG_LOAD_IMAGE_FROM_MEMORY_CACHE, memoryCacheKey);
if (options.shouldPostProcess()) {
ImageLoadingInfo imageLoadingInfo = new ImageLoadingInfo(uri, imageAware, targetSize, memoryCacheKey,
options, listener, progressListener, engine.getLockForUri(uri));
//处理并显示图片
ProcessAndDisplayImageTask displayTask = new ProcessAndDisplayImageTask(engine, bmp, imageLoadingInfo,
defineHandler(options));
if (options.isSyncLoading()) {
displayTask.run();
engine.submit(displayTask);
//显示图片
options.getDisplayer().display(bmp, imageAware, LoadedFrom.MEMORY_CACHE);
listener.onLoadingComplete(uri, imageAware.getWrappedView(), bmp);
if (options.shouldShowImageOnLoading()) {
imageAware.setImageDrawable(options.getImageOnLoading(configuration.resources));
} else if (options.isResetViewBeforeLoading()) {
imageAware.setImageDrawable(null);
ImageLoadingInfo imageLoadingInfo = new ImageLoadingInfo(uri, imageAware, targetSize, memoryCacheKey,
options, listener, progressListener, engine.getLockForUri(uri));
//启动一个线程,加载并显示图片
LoadAndDisplayImageTask displayTask = new LoadAndDisplayImageTask(engine, imageLoadingInfo,
defineHandler(options));
if (options.isSyncLoading()) {
displayTask.run();
engine.submit(displayTask);
代码有点多,但是有很多代码是进行异常判断处理和函数的回调,为了先把握整体的流程,我们先放弃细节方面的追踪。基本上重要的处理流程我都有用注释标出。不过,从这段代码中我们也可以看出这段代码的结构非常清晰。对图片的整个的加载流程都有对应的监听接口(ImageLoadingListener.onLoadingStarted,ImageLoadingListener.onLoadingComplete,ImageLoadingListener这个类就是用来监听图片的加载过程的),也就是说整个的图片加载过程程序员都可以进行相应的处理。我们先关注一下图片从无到有的加载过程,毕竟这部分是大家最为关心的。看到第63行中的LoadAndDisplayImageTask,跟进LoadAndDisplayImageTask.run()方法中。在这个run()方法中,除了 bmp = tryLoadBitmap();这一句是对图片进行加载,其他的函数都是对Bitmap进行处理或者显示。我们继续进入看看。
1 private Bitmap tryLoadBitmap() throws TaskCancelledException {
Bitmap bitmap = null;
//尝试从磁盘缓存中读取Bitmap
File imageFile = configuration.diskCache.get(uri);
if (imageFile != null && imageFile.exists()) {
L.d(LOG_LOAD_IMAGE_FROM_DISK_CACHE, memoryCacheKey);
loadedFrom = LoadedFrom.DISC_CACHE;
checkTaskNotActual();
bitmap = decodeImage(Scheme.FILE.wrap(imageFile.getAbsolutePath()));
//没有缓存在磁盘,从网络中下载图片
if (bitmap == null || bitmap.getWidth() &= 0 || bitmap.getHeight() &= 0) {
L.d(LOG_LOAD_IMAGE_FROM_NETWORK, memoryCacheKey);
loadedFrom = LoadedFrom.NETWORK;
String imageUriForDecoding =
if (options.isCacheOnDisk() && tryCacheImageOnDisk()) {
imageFile = configuration.diskCache.get(uri);
if (imageFile != null) {
imageUriForDecoding = Scheme.FILE.wrap(imageFile.getAbsolutePath());
checkTaskNotActual();
bitmap = decodeImage(imageUriForDecoding);
if (bitmap == null || bitmap.getWidth() &= 0 || bitmap.getHeight() &= 0) {
fireFailEvent(FailType.DECODING_ERROR, null);
} catch (IllegalStateException e) {
fireFailEvent(FailType.NETWORK_DENIED, null);
} catch (TaskCancelledException e) {
} catch (IOException e) {
fireFailEvent(FailType.IO_ERROR, e);
} catch (OutOfMemoryError e) {
fireFailEvent(FailType.OUT_OF_MEMORY, e);
} catch (Throwable e) {
fireFailEvent(FailType.UNKNOWN, e);
从3~12行是尝试从磁盘缓存中加载Bitmap。第19行判断磁盘中是否有缓存,就开始进行网络下载(tryCacheImageOnDisk())。在tryCacheImageOnDisk()函数中有个tryCacheImageOnDisk()的 loaded = downloadImage()这行进行图片下载。
private boolean downloadImage() throws IOException {
InputStream is = getDownloader().getStream(uri, options.getExtraForDownloader());
return configuration.diskCache.save(uri, is, this);
这个函数做的事情很简单,就是获取一个实现Image Downloader的downloader(当然这里,作者根据网络情况将downloader分为慢速(slowNetworkDownloader)、正常速度(downloader)、网络拒绝(networkDeniedDownloader)情况下的download,在这里我们不展开,你只要知道他们是imageDownloader接口的实现者就行,后面的文章会探讨这个问题),然后利用Disk Cache将Bitmap写入磁盘缓存中。返回到之前我们进入downloadImage()函数中的tryLoadBitmap(),在将图片缓存到磁盘中。是否缓存到磁盘跟配置有关)后,紧接着调用 bitmap = decodeImage(Scheme.FILE.wrap(imageFile.getAbsolutePath()));解析图片。进入decodeImage()函数中,我们发现UIL调用Image Decoder进行图片的解析。
private Bitmap decodeImage(String imageUri) throws IOException {
ViewScaleType viewScaleType = imageAware.getScaleType();
ImageDecodingInfo decodingInfo = new ImageDecodingInfo(memoryCacheKey, imageUri, uri, targetSize, viewScaleType,
getDownloader(), options);
return decoder.decode(decodingInfo);
decode()函数最终是调用BaseImageDecoder.decode()方法进行解析的,这个利用之前获得的inputStream,直接从它身上读取数据,然后进行解析,并对整个下载任务的网络接口进行重置。
1 public Bitmap decode(ImageDecodingInfo decodingInfo) throws IOException {
Bitmap decodedB
ImageFileInfo imageI
InputStream imageStream = getImageStream(decodingInfo);
imageInfo = defineImageSizeAndRotation(imageStream, decodingInfo);
imageStream = resetStream(imageStream, decodingInfo);
Options decodingOptions = prepareDecodingOptions(imageInfo.imageSize, decodingInfo);
decodedBitmap = BitmapFactory.decodeStream(imageStream, null, decodingOptions);
} finally {
IoUtils.closeSilently(imageStream);
if (decodedBitmap == null) {
L.e(ERROR_CANT_DECODE_IMAGE, decodingInfo.getImageKey());
decodedBitmap = considerExactScaleAndOrientatiton(decodedBitmap, decodingInfo, imageInfo.exif.rotation,
imageInfo.exif.flipHorizontal);
return decodedB
接下来,有了解析好的Bitmap对象后,剩下的就是在Image View对象中显示它了。我们回到文章一开始介绍到的ImageLoader.displayImage(...)函数中(相关的代码在文章的开头处可以看到)。
为了方便,我还是将ImageLoader.displayImage(...)中涉及的代码贴在下面。
DisplayBitmapTask displayBitmapTask = new DisplayBitmapTask(bmp, imageLoadingInfo, engine, loadedFrom);
runTask(displayBitmapTask, syncLoading, handler, engine);
我们进去DisplayBitmapTask.run()函数中看看。除去前面几行的ImageLoadingListener.ImageLoadingListener()代码,相关代码其实就一行&displayer.display(bitmap, imageAware, loadedFrom),它其实就是调用BitmapDisplayer这个对象将Bitmap对象显示到ImageView上。根据实现BitmapDisplayer接口的不同对象,还有SimpleBitmapDisplayer、FadeInBitmapDisplayer、RoundedBitmapDisplayer、RoundedVignetteBitmapDisplayer这5种对象。
最后,让我们用任务流图概况以上的处理流程中对应接口。
在接下去的文章中,我们会介绍UIL中的包设计、缓冲、下载、多任务机制。
阅读(...) 评论()imageloader加载图片的内存泄露问题_android开发吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:125,192贴子:
imageloader加载图片的内存泄露问题收藏
使用的是viewpager和fragment,fragment中使用了imageloader加载图片,会出现内存泄漏。求问有什么有效方式解决?在页面中调用imageloader.clearMemoryCache()没有起作用,imageloader设置参照网上说的,new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2).memoryCache(null)new DisplayImageOptions.Builder().cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY).bitmapConfig(Bitmap.Config.RGB_565)貌似都没法防止OOM
android开发,低成本,快速开发iOS和安卓App,上架快,满足您的个性化开发需求.android开发,强大的用户行为分析,数据安全,稳定可靠.免费体验.
限定只加载10张以下的图片就好了。
关于这个,你可以用一下github上的一个开源module,叫Android-Universal-Image-Loader。网址是
看下这个博客
希望对你有帮助
登录百度帐号android imageloader取完图片后能将图片放大吗_百度知道
android imageloader取完图片后能将图片放大吗
或者有其他方法可以使一张图片放大
我有更好的答案
ImageLoader?你用的是什么ImageLoader
ImageLoader.getInstance().displayImage
看这种用法,应该是android universal imageloader……DisplayOptions里面可以设置一个postProcessor,在里面将图片放大显示。
能说得具体点吗?我的是displayimageoptions你说的那个怎么用
就是那个DisplayImageOptions,可以设置一个postProcessor,在postProcessor里面会有一个bitmap参数,你可以对它进行放大。看看方法注释。
可以有,取完图片后可以使用BitmapFactory.Options方式进行图片的放大或者缩小!!!首先取图片的实际宽和高,然后和当前手机宽高计算比例,然后进行等比例放大!
我用的是这种方法取图:ImageLoader.getInstance().displayImage,怎样实现你说的注意是网络上的图,有缓存
为您推荐:
其他类似问题
android的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Android-Universal-Image-Loader使用介绍 - 简书
Android-Universal-Image-Loader使用介绍
图片开源库是一个应用非常广泛的第三方库,几乎所有的应用都会使用。目前而言常见的图片库有:Android-Universal-Image-Loader,Picasso,Fresco,Glide等,下面是中对图片开源库使用情况的统计表
ImageLoader使用比例
由此可见在国内应用中,UIL是使用最广泛的图片开源库。接下来就简单介绍这个UIL的基本使用,该项目的Github地址链接:
一.UIL的功能特性
1、多线程异步加载和显示图片(网络图片、sd卡、资源文件(asset,mipmap等,不能加载9patch),新增加载视频缩略图)
2、支持加载过程的监听,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)
3、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)
4、支持图片的内存缓存,SD卡(文件)缓存
执行原理:每一个图片的加载和显示任务都运行在独立的线程中,除非这个图片缓存在内存中,这种情况下图片会立即显示。如果需要的图片缓存在本地,他们会开启一个独立的线程队列。如果在缓存中没有正确的图片,任务线程会从线程池中获取,因此,快速显示缓存图片时不会有明显的障碍。(别人那边借鉴的这段)
二、使用方法
1、Include library
我们都知道使用第三方库的第一步就是引入jar文件,这里有如下几种方式来引入jar文件。
1)、 下载jar文件并拷入lib文件夹。
2)、Maven dependency:
3)、Gradle dependency:
compile'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
2、添加相关权限,一般为访问网络的权限和访问内存的权限
3、下面我们就来开始看如何使用这个图片异步加载库:
1)、先要配置ImageLoaderConfiguration这个类实现全局ImageLoader的实现情况。
一般在Application中初始化设置该类。
//获取缓存文件
File cacheDir = StorageUtils.getCacheDirectory(this);
//设置自定义缓存的目录
cacheDir = StorageUtils.getOwnCacheDirectory(this,"imageloader/Cache");
//初始化ImageLoad
ImageLoaderConfiguration config =newImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480,800)//设置缓存图片的默认尺寸,一般取设备的屏幕尺寸
.diskCacheExtraOptions(480,800, null)
.threadPoolSize(3)// 线程池内加载的数量,default = 3
.threadPriority(Thread.NORM_PRIORITY-2)
.tasksProcessingOrder(QueueProcessingType.FIFO)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(newLruMemoryCache(2*))//自定义内存的缓存策略
.memoryCacheSize(2*)
.memoryCacheSizePercentage(13)// default
.diskCache(newUnlimitedDiskCache(cacheDir))// default
.diskCacheSize(50*)
.diskCacheFileCount(100)//缓存的文件数量
.diskCache(newUnlimitedDiskCache(cacheDir))//自定义缓存路径
.diskCacheFileNameGenerator(newHashCodeFileNameGenerator())// default
.imageDownloader(newBaseImageDownloader(this))// default
.imageDecoder(newBaseImageDecoder(true))// default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())// default
.writeDebugLogs()
以上的配置看个人需求进行选择,不是所有都要进行配置。
配置好ImageLoaderConfiguration后,调用以下方法来实现初始化
ImageLoader.getInstance().init(config);
2)、加载图片
在使用ImageLoader进行图片加载的时候,先要实例化ImageLoader,在每个布局里面都要实例化后再使用,实例化的方法有如下几种:
protectedImageLoader imageLoader = ImageLoader.getInstance();
之后进行显示的图片的各种格式DisplayImageOptions的设置:
mOptions=newDisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher)//设置图片在下载期间显示的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.mipmap.ic_launcher)//设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置是否缓存在SD卡中
.considerExifParams(true)//是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片的缩放类型
.bitmapConfig(Bitmap.Config.ARGB_4444)//设置图片的解码类型
//.decodingOptions(null)
//设置Bitmap的配置选项
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.displayer(newRoundedBitmapDisplayer(100))//是否设置为圆角,弧度为多少
.displayer(newFadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间
在上面配置中,并不是所有的配置都是我们需要的,在实际使用中我们只需要配置我们需要的就可以,下面简单介绍两个最常用的配置:
imageScaleType(ImageScaleType imageScaleType)是设置图片的缩放方式,其中缩放方式有如下几种:
EXACTLY :图像将完全按比例缩小的目标大小
EXACTLY_STRETCHED:图片会缩放到目标大小完全
IN_SAMPLE_INT:图像将被二次采样的整数倍
IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
NONE:图片不会调整
displayer(BitmapDisplayer displayer)是设置图片的显示方式
显示方式displayer:
RoundedBitmapDisplayer(introundPixels)设置圆角图片
FakeBitmapDisplayer()这个类什么都没做
FadeInBitmapDisplayer(intdurationMillis)设置图片渐显的时间
SimpleBitmapDisplayer()正常显示一张图片
3)、使用ImageLoad来显示图片
(1). 加载一张网络图片
ImageLoader.getInstance().displayImage(imageUrl, imageView);
(2)、加载一张网络图片并自定义配置
ImageLoader.getInstance().displayImage("http://img5.imgtn.bdimg.com/it/u=,&fm=21&gp=0.jpg",mImageView,mOptions);
(3)、加载一张图片并对图片的加载过程进行监听
ImageLoader.getInstance().displayImage("http://img5.imgtn.bdimg.com/it/u=,&fm=21&gp=0.jpg",mImageView2,mOptions, newImageLoadingListener() {
public voidonLoadingStarted(String imageUri,View view) {
//开始加载
public voidonLoadingFailed(String imageUri,View view,FailReason failReason) {
//加载失败
public voidonLoadingComplete(String imageUri,View view,Bitmap loadedImage) {
//加载完成
public voidonLoadingCancelled(String imageUri,View view) {
//取消加载
(4)、图片加载时候,带监听又带加载进度条的情况调用:
imageLoader.displayImage(imageUrl, imageView, options,newImageLoadingListener() {
publicvoidonLoadingStarted() {
//开始加载的时候执行
publicvoidonLoadingFailed(FailReason failReason) {
//加载失败的时候执行
publicvoidonLoadingComplete(Bitmap loadedImage) {
//加载成功的时候执行
publicvoidonLoadingCancelled() {
//加载取消的时候执行
},newImageLoadingProgressListener() {
publicvoidonProgressUpdate(String imageUri, View view,intcurrent,inttotal) {
//在这里更新 ProgressBar的进度信息
三、注意事项
1、ImageLoaderConfiguration必须配置并且全局化的初始化这个配置ImageLoader.getInstance().init(config);
否则会出现错误提示
2、ImageLoader是根据ImageView的height,width确定图片的宽高。
3、如果经常出现OOM(官方的建议)
①减少配置之中线程池的大小,(.threadPoolSize).推荐1-5;
②使用.bitmapConfig(Bitmap.config.RGB_565)代替ARGB_8888;
③使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者
try.imageScaleType(ImageScaleType.EXACTLY);
④避免使用RoundedBitmapDisplayer.他会创建新的ARGB_8888格式的Bitmap对象;
⑤使用.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();
空杯心态--空杯是一种做事的心态也是一种求知的心态。盛满水的杯子再也容不下多余的水,同理,自认为通晓天下的人再也学不到新的知识。
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
写在前面,UIL这个图片加载框架在去年的时候,作者就已经宣布因为时间关系,停止维护了!以下为作者原话: Project News Really have no time for development... so I stop project maintaining sin...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
10.MemoryCache MemoryCache是实现内存缓存的类,不管是内存缓存还是磁盘缓存,对于ImageLoader来说都是核心功能,因为关系着图片的加载速度,因此要深入了解UIL中缓存的工作原理。 回忆一下,之前学过的ImageLoader的缓存实现,在之前的实...
09:58 阅读(29)评论(5) 遵照医嘱,礼拜一要去医院复查。夜里下了雪,路面有些地方还结了冰。小儿子怕我自己去有危险,就开车送我去医院。 医生检查后说:“糖尿病人伤口长到这个程度已经很不错了!有一个糖尿病人19天了还要来上药。你现在就是插导...
我和我的清晨有个约会。早安!小伙伴们。 肉肉的世界,也是丰富多彩,有一种美,就是我长得和你不一样,我特殊的美,独一无二的美。 早晨听喜马拉雅的徐文兵,梁冬《黄帝内经》, 我的收获:1.日出而作,日落而息。尽量在晚上10点钱休息,早上太阳升起的时候起床比如5点。最好看完新闻联...
不知不觉,自己也到了该结婚的年龄。于是乎,熟悉的、不熟悉的人都来给你介绍相亲对象。 在他们的嘴里,你的相亲对象那是“此人只应天上有,人间难得几回闻。”所以,起初的你,便怀着一颗少女心,和对方互加了微信,盼望着上演公主王子的童话。 然而,童话终究是想象的产物啊。于是,你不想再...
我听过太多的情歌,看过太多的情书,见过太多的分别,可不论多少次提到爱情我总是会想起你――赵同学。 我在很多年后常常深思爱情最真实的模样,两个人对坐,一碗面吃得也欢喜,又或者阳光下的篮球场,被光芒包裹的我们,又或者怒目相对的时刻,铺天盖地的谎言,连万物也跟着面目可憎。 然而,...
三春枯冢犹覆雪,夕阳几度对江流。 芳树无人花自落,长亭离歌酒消愁。 月落枝头影成双,仰天长叹是牵牛。 君妾纵是天仙骨,年华又怎为君留? 16-2-26

我要回帖

更多关于 位图颜色遮罩无法使用 的文章

 

随机推荐