`

Android 几种图像特效处理的集锦

 
阅读更多
大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.

废话少说了,直接讲解今天的实例,本例主要是先获取壁纸(getWallpaper()),然后对当前壁纸的一些特效处理.大家按步骤一步一步来:
第一步:新建一个Android工程命名为ImageDemo,工程结构如下:


 
第二步:新建一个.java文件,命名为ImageUtil.java,在里面定义一些图片处理方法,代码如下:

 

package com.android.tutor; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Bitmap.Config; import android.graphics.PorterDuff.Mode; import android.graphics.Shader.TileMode; import android.graphics.drawable.Drawable; public class ImageUtil { //放大缩小图片 public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){ int width = bitmap.getWidth(); int height = bitmap.getHeight(); Matrix matrix = new Matrix(); float scaleWidht = ((float)w / width); float scaleHeight = ((float)h / height); matrix.postScale(scaleWidht, scaleHeight); Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); return newbmp; } //将Drawable转化为Bitmap public static Bitmap drawableToBitmap(Drawable drawable){ int width = drawable.getIntrinsicWidth(); int height = drawable.getIntrinsicHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0,0,width,height); drawable.draw(canvas); return bitmap; } //获得圆角图片的方法 public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){ Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap .getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } //获得带倒影的图片方法 public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){ final int reflectionGap = 4; int width = bitmap.getWidth(); int height = bitmap.getHeight(); Matrix matrix = new Matrix(); matrix.preScale(1, -1); Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height/2, width, height/2, matrix, false); Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888); Canvas canvas = new Canvas(bitmapWithReflection); canvas.drawBitmap(bitmap, 0, 0, null); Paint deafalutPaint = new Paint(); canvas.drawRect(0, height,width,height + reflectionGap, deafalutPaint); canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null); Paint paint = new Paint(); LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0, bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP); paint.setShader(shader); // Set the Transfer mode to be porter duff and destination in paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); // Draw a rectangle using the paint with our linear gradient canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint); return bitmapWithReflection; } }


 
 第三步:修改main.xml布局文件,主要放了两个ImageView控件,代码如下:

<!--?xml version="1.0" encoding="utf-8"?-->


 第四步:修改主核心程序,ImageDemo.java,代码如下:

package com.android.tutor; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.ImageView; public class Imagedemo extends Activity { private ImageView mImageView01,mImageView02; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setupViews(); } private void setupViews(){ mImageView01 = (ImageView)findViewById(R.id.image01); mImageView02 = (ImageView)findViewById(R.id.image02); //获取壁纸返回值是Drawable Drawable drawable = getWallpaper(); //将Drawable转化为Bitmap Bitmap bitmap = ImageUtil.drawableToBitmap(drawable); //缩放图片 Bitmap zoomBitmap = ImageUtil.zoomBitmap(bitmap, 100, 100); //获取圆角图片 Bitmap roundBitmap = ImageUtil.getRoundedCornerBitmap(zoomBitmap, 10.0f); //获取倒影图片 Bitmap reflectBitmap = ImageUtil.createReflectionImageWithOrigin(zoomBitmap); //这里可以让Bitmap再转化为Drawable // Drawable roundDrawable = new BitmapDrawable(roundBitmap); // Drawable reflectDrawable = new BitmapDrawable(reflectBitmap); // mImageView01.setBackgroundDrawable(roundDrawable); // mImageView02.setBackgroundDrawable(reflectDrawable); mImageView01.setImageBitmap(roundBitmap); mImageView02.setImageBitmap(reflectBitmap); } }


 第五步:运行上述工程,查看效果如下:


 
  • 大小: 25.8 KB
  • 大小: 19.4 KB
2
3
分享到:
评论

相关推荐

    Android 图像连环画特效源码.rar

    在Android平台上,图像...这个压缩包中的源代码很可能是实现了以上部分或全部知识点,通过分析和学习这个源码,开发者可以深入理解Android图像处理机制,提升自己的技能,并有可能在此基础上创建更多创新的图像特效。

    Android 图像连环画特效源码.zip

    总的来说,这个源码提供了一个实践图像特效的实例,对于想要在Android应用中实现独特视觉效果的开发者来说,是一个极好的学习和参考资源。通过学习和应用这些代码,不仅可以增强图像处理技能,还能提升应用的用户...

    Android 图像冰冻特效源码.zip

    "Android 图像冰冻特效源码.zip" 提供了一个学习和参考的项目,旨在实现一种创新的图像特效——冰冻效果。这个效果通常用于使图像看起来像是被冰冻或者凝固,给用户带来独特的视觉体验。 冰冻特效在Android中实现,...

    【Android精品资源】android常用图片特效处理

    在Android中实现图片特效处理,主要涉及以下几个技术点: 1. **Bitmap操作**:Bitmap是Android中用于存储和显示图像的基本类。开发者可以通过Bitmap对象进行图片的加载、解码、绘制以及各种特效处理。例如,可以...

    Android 图像冰冻特效源码.zip源码资源下载

    总的来说,这个源码资源对于想要学习Android图像特效、动画处理和图形编程的开发者来说极具价值。通过深入研究和理解源码,开发者不仅可以掌握特定的冰冻特效实现方式,还能提升对Android图形系统和动画框架的理解。

    Android源码——图像柔化美白特效源码_new_37.zip

    "Android源码——图像柔化美白特效源码_new_37.zip"提供的源码,是针对图像处理的一种常见应用——图像柔化和美白特效的实现。这类特效广泛应用于自拍应用、美图工具等,可以让用户在拍摄或编辑照片时实现更自然、更...

    Android 图像冰冻特效源码.rar

    "Android 图像冰冻特效源码"可能是一个开源项目,它实现了独特的图像“冰冻”特效,为应用程序增添了一种引人入胜的视觉体验。这个源码库可能包含了一些自定义视图、动画类或库,用于在Android平台上创建这种特殊的...

    DragSelectRecyclerView长按滑动多选图像android特效.rar

    《Android开发:DragSelectRecyclerView实现长按滑动多选图像特效》 在Android应用开发中,用户界面(UI)的设计和交互体验至关重要。一个优秀的应用不仅要功能强大,而且要操作流畅,界面美观。...

    android常用图片特效处理.zip

    7. **图片压缩**:Android的Bitmap类提供了几种压缩方式,如`compress(Bitmap.CompressFormat format, int quality, OutputStream stream)`,可以控制图片的质量和大小。另外,第三方库如 Glide 和 Fresco 自带了...

    Android【动画】【特效】 17种动画特效

    7. **Tween动画**:综合运用以上几种动画,创建复杂的组合动画。 8. **帧动画**:通过连续播放一系列静态图像来创建连续的动画效果,常用于加载图标或游戏动画。 9. **ObjectAnimator**:属性动画的一种,可以改变...

    android图像处理系统框架1.2版

    在Android平台上,图像处理系统是开发者进行图形界面优化和创新应用的重要工具。1.2版的更新可能包含了一些性能提升、新特性和错误修复。在这个版本中,我们重点关注以下几个核心知识点: 1. **SurfaceTexture与...

    Android 切换游戏场景特效的实现

    在实现游戏场景切换特效时,有以下几种常见的技术手段: 1. **渐变过渡**:通过在两个场景之间绘制一个逐渐变化的颜色或者图像,使场景之间的切换看起来更为自然。这可以通过在OpenGL ES中使用顶点着色器和片段着色...

    Android TextView闪闪发光特效

    这种特效通常通过Shimmer效果来实现,它可以让TextView的文字或图像看起来像在闪烁或者流动,营造出一种动态的、吸引人的视觉焦点。 首先,我们来看`ShimmerDemo`。这是一个示例项目,它演示了如何在实际应用中集成...

    Android特效的幻灯片-Ken Burns

    其中,"Ken Burns"特效,也被称为“Ken Burns效果”或“移动镜头”效果,是一种广泛应用于幻灯片、照片展示和视频制作中的动态图像处理技术。这种特效通过模拟摄像机对静态图像的平移和缩放,赋予静止的画面一种动态...

    android cover flow特效

    在Android开发中,Cover Flow是一种视觉效果,常用于展示一系列图像,如音乐专辑封面或图片库,用户可以平滑地滚动这些元素,看起来就像是在3D空间中翻转。这个特效给用户带来了丰富的互动体验,增加了应用的吸引力...

    android 100种图片处理大全

    在项目中,你可能会遇到以下几种常见的图片处理技术: 1. 图片缩放:使用Bitmap.createScaledBitmap()方法可以对图片进行缩放,以适应不同的屏幕尺寸或内存限制。 2. 图片旋转:通过Matrix类,我们可以对Bitmap...

Global site tag (gtag.js) - Google Analytics