第二步:新建一个.java文件,命名为ImageUtil.java,在里面定义一些图片处理方法,代码如下:
view plaincopy to clipboardprint?
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控件,代码如下:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/image01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10px"
/>
<ImageView
android:id="@+id/image02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10px"
/>
</LinearLayout>
第四步:修改主核心程序,ImageDemo.java,代码如下:
view plaincopy to clipboardprint?
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);
}
}
分享到:
相关推荐
在Android平台上,图像...这个压缩包中的源代码很可能是实现了以上部分或全部知识点,通过分析和学习这个源码,开发者可以深入理解Android图像处理机制,提升自己的技能,并有可能在此基础上创建更多创新的图像特效。
"Android 图像冰冻特效源码.zip" 提供了一个学习和参考的项目,旨在实现一种创新的图像特效——冰冻效果。这个效果通常用于使图像看起来像是被冰冻或者凝固,给用户带来独特的视觉体验。 冰冻特效在Android中实现,...
总的来说,这个源码提供了一个实践图像特效的实例,对于想要在Android应用中实现独特视觉效果的开发者来说,是一个极好的学习和参考资源。通过学习和应用这些代码,不仅可以增强图像处理技能,还能提升应用的用户...
在Android中实现图片特效处理,主要涉及以下几个技术点: 1. **Bitmap操作**:Bitmap是Android中用于存储和显示图像的基本类。开发者可以通过Bitmap对象进行图片的加载、解码、绘制以及各种特效处理。例如,可以...
7. **Tween动画**:综合运用以上几种动画,创建复杂的组合动画。 8. **帧动画**:通过连续播放一系列静态图像来创建连续的动画效果,常用于加载图标或游戏动画。 9. **ObjectAnimator**:属性动画的一种,可以改变...
《Android开发:DragSelectRecyclerView实现长按滑动多选图像特效》 在Android应用开发中,用户界面(UI)的设计和交互体验至关重要。一个优秀的应用不仅要功能强大,而且要操作流畅,界面美观。...
"Android 图像冰冻特效源码"可能是一个开源项目,它实现了独特的图像“冰冻”特效,为应用程序增添了一种引人入胜的视觉体验。这个源码库可能包含了一些自定义视图、动画类或库,用于在Android平台上创建这种特殊的...
7. **图片压缩**:Android的Bitmap类提供了几种压缩方式,如`compress(Bitmap.CompressFormat format, int quality, OutputStream stream)`,可以控制图片的质量和大小。另外,第三方库如 Glide 和 Fresco 自带了...
"Android 图像冰冻特效源码.zip" 提供的源码资源,很可能是为了展示如何在应用程序中实现一种图像“冰冻”特效。这种特效可能涉及到动态改变图像的透明度、色彩或者运动状态,从而营造出物体被冰冻的视觉错觉。接...
在Android开发中,为UI元素添加动画效果可以极大地提升用户体验,"Android TextView闪闪发光特效"就是这样一种常见的视觉增强技术。这种特效通常通过Shimmer效果来实现,它可以让TextView的文字或图像看起来像在闪烁...
"Android源码——图像柔化美白特效源码_new_37.zip"提供的源码,是针对图像处理的一种常见应用——图像柔化和美白特效的实现。这类特效广泛应用于自拍应用、美图工具等,可以让用户在拍摄或编辑照片时实现更自然、更...
以上是对"android图像处理系统框架1.2版"可能包含的关键知识点的详尽解析,每个点都值得开发者深入研究和应用到实际项目中。通过了解和掌握这些内容,可以提升Android应用的图像处理能力,提供更丰富的用户体验。
在实现游戏场景切换特效时,有以下几种常见的技术手段: 1. **渐变过渡**:通过在两个场景之间绘制一个逐渐变化的颜色或者图像,使场景之间的切换看起来更为自然。这可以通过在OpenGL ES中使用顶点着色器和片段着色...
其中,"Ken Burns"特效,也被称为“Ken Burns效果”或“移动镜头”效果,是一种广泛应用于幻灯片、照片展示和视频制作中的动态图像处理技术。这种特效通过模拟摄像机对静态图像的平移和缩放,赋予静止的画面一种动态...
在Android开发中,Cover Flow是一种视觉效果,常用于展示一系列图像,如音乐专辑封面或图片库,用户可以平滑地滚动这些元素,看起来就像是在3D空间中翻转。这个特效给用户带来了丰富的互动体验,增加了应用的吸引力...
3. **滤镜效果**: Android支持多种图像特效,如灰度、饱和度调整、色调映射等。这些效果可以通过ColorMatrix或使用第三方库实现,例如使用 glide-colorfilter 插件添加自定义滤镜。 4. **图片裁剪**: 使用Bitmap....