android上特效(源代码)
16lz
2021-01-26
package com.test;import android.R.integer;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.ColorMatrix;import android.graphics.ColorMatrixColorFilter;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.RectF;import android.os.Bundle;import android.view.View;public class NewActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(new _view(this));}class _view extends View{public _view(Context context){super(context);// TODO Auto-generated constructor stub}@Overridepublic void onDraw(Canvas canvas){RectF rectF = new RectF(30f, 300f, 400f, 800f);Matrix _Matrix = new Matrix();Paint _Paint = new Paint();_Paint.setColor(Color.BLUE);canvas.drawArc(rectF, 0f, 180f, true, _Paint);Bitmap bitmap = BitmapFactory.decodeFile("data/data/com.test/filse/psb.jpg");int psb[] = new int[bitmap.getWidth() * bitmap.getHeight()] ;bitmap.getPixels(psb, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight()); int width = bitmap.getWidth(); int height = bitmap.getHeight(); Bitmap _bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); int pixColor = 0; int pixR = 0; int pixG = 0; int pixB = 0; int newR = 0; int newG = 0; int newB = 0; int[] pixels = new int[width * height]; bitmap.getPixels(pixels, 0, width, 0, 0, width, height); for (int i = 0; i < height; i++) { for (int k = 0; k < width; k++) { pixColor = pixels[width * i + k]; pixR = Color.red(pixColor); pixG = Color.green(pixColor); pixB = Color.blue(pixColor); newR = (int) (0.393 * pixR + 0.769 * pixG + 0.189 * pixB); newG = (int) (0.349 * pixR + 0.686 * pixG + 0.168 * pixB); newB = (int) (0.272 * pixR + 0.534 * pixG + 0.131 * pixB); int newColor = Color.argb(255, newR > 255 ? 255 : newR, newG > 255 ? 255 : newG, newB > 255 ? 255 : newB); pixels[width * i + k] = newColor; } } _bitmap.setPixels(pixels, 0, width, 0, 0, width, height);/*int count = 0; int preColor = 0; int prepreColor = 0; int color = 0; for (int i = 0; i < bitmap.getWidth(); i++) { for (int j = 0; j < bitmap.getHeight(); j++) { int curr_color = psb[count];// int curr_color = psb[i*bitmap.getHeight() + j]; int r = Color.red(prepreColor) - Color.red(curr_color) +127; int g = Color.green(prepreColor) - Color.green(curr_color) +127; int b = Color.blue(prepreColor) - Color.blue(curr_color) +127; int a = Color.alpha(prepreColor); int modif_color = Color.argb(a, r, g, b);// bitmap.setPixel(i, j, modif_color);// psb[i*bitmap.getHeight() + j] = modif_color; psb[count] = modif_color; prepreColor = preColor; preColor = curr_color; count++; } }*/ canvas.drawBitmap(_bitmap,0,0,null);/*Rect _Rect = new Rect(300, 300, 500, 500);Rect _Rect2 = new Rect(20, 20, 170, 170);//canvas.drawBitmap(bitmap, null, _Rect, null);canvas.drawBitmap(bitmap,null, _Rect2, _Paint);_Matrix.setRotate(45f, 300, 300);canvas.setMatrix(_Matrix);ColorMatrix _ColorMatrix = new ColorMatrix();_ColorMatrix.setSaturation(0);ColorMatrixColorFilter _ColorMatrixColorFilter = new ColorMatrixColorFilter(_ColorMatrix);_Paint.setColorFilter(_ColorMatrixColorFilter);canvas.drawBitmap(bitmap, null, _Rect, _Paint);*/}}}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer