基于bmob瀑布流:图片加文字的实现方式

 最近总算有空了,可以写一下之前自己学习bmob的一些收获,延续上篇的工作展开说明。

  上一篇我们实现了瀑布流,进一步的我们又想实现图片加文字卡片式的瀑布形式,由于自己是第一次涉及,初次想到了用画布的形式实现,当然还有其他更高级的方法可以更加完美的实现,但本文不做深入研究,仅说明自己的实现方法,方法比较笨,请见谅。用画布的形式实现比较简单,虽然比较简陋,先来一张效果图:

  实现的形式简单粗暴,具体用到了canvas的图像拼接,文字添加这两块知识。具体实现过程如下:

  首先从bmob服务器获得图片以瀑布流形式实现,获取一张图片的尺寸大小,

int width =response.getWidth(), hight =response.getHeight();
System.out.println("宽"+width+"高"+hight);

  再重新绘制一张画布:

Bitmap icon=Bitmap.createBitmap(response.getWidth(),response.getHeight()+114, Bitmap.Config.ARGB_8888); //建立一个空的BItMap   
Canvas canvas = new Canvas(icon);//初始化画布绘制的图像到icon上

这里高度大小自己定为了  “response.getHeight()+114”,宽度不变,跟获取的图片宽度一致。

然后将获取的图片先画入画布:

Paint photoPaint = new Paint(); //建立画笔  
photoPaint.setDither(true); //获取跟清晰的图像采样  
photoPaint.setFilterBitmap(true);//过滤一些  
                 
Rect src = new Rect(0, 0, response.getWidth(),response.getHeight());//创建一个指定的新矩形的坐标  
Rect dst = new Rect(0, 0, width, hight);//创建一个指定的新矩形的坐标  
canvas.drawBitmap(response, src, dst, photoPaint);//将photo 缩放或则扩大到 dst使用的填充区photoPaint       

画完服务器的图片,再进行拼接文字的背景图,这里的背景图片直接从本地获取(当然也可以从网络或其他途径获取),获取的图片要转化为bitmap格 式: 

Drawable mDrawable=MainActivity1.this.getResources().getDrawable(R.drawable.fenf);
Bitmap mBitmap = ((BitmapDrawable) mDrawable).getBitmap();
之后画入画布:
src = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight());// 截取bmp1中的矩形区域
dst = new Rect(0, hight, width,
                response.getHeight()+114);// bmp2在目标画布中的位置
canvas.drawBitmap(mBitmap, src, dst, photoPaint);

最后把文字画入即可:

TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);//设置画笔  
textPaint.setTextSize(24.0f);//字体大小  
textPaint.setTypeface(Typeface.DEFAULT_BOLD);//采用默认的宽度  
textPaint.setColor( Color.WHITE);//采用的颜色  Color.GREEN
//textPaint.setShadowLayer(3f, 1, 1,this.getResources().getColor(android.R.color.background_dark));//阴影的设置  
StaticLayout layout = new StaticLayout("『主题』"+str1,textPaint,icon.getWidth(),Alignment.ALIGN_NORMAL,1.0F,0.0F,false);               
canvas.translate(0,response.getHeight()+4);
layout.draw(canvas); 
canvas.save(Canvas.ALL_SAVE_FLAG); 
canvas.restore(); 
itemImage.setImageBitmap(icon);

  以上就是大体步骤。最后仿照上述方法实现了点击这个图片进行阅读的效果,如图:


  具体流程就是这样,有问题可以私信本作者,欢迎交流一起学习。接下来的博客作者将写一下基于bmob实现发帖与评论的一些学习心得,会继续努力~!谢谢~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值