android圆形图片的获取与图片绕中心旋转
来源:互联网 发布:淘宝店铺做淘宝客教程 编辑:程序博客网 时间:2024/06/09 21:46
这是我第一篇博客,写得比较简单,望大家见谅。这篇博客主要介绍如何对图片进行处理变为图形图片,并使得图片绕中心旋转。效果图如下
首先是图形图片的获取方法,代码如下:
private Bitmap getCircularBitmap(Bitmap bitmap, int radius) {
Bitmap sbmp = Bitmap.createScaledBitmap(bitmap, radius, radius, false);
Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(),
Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.BLACK);
canvas.drawCircle(sbmp.getWidth() / 2, sbmp.getHeight() / 2,
sbmp.getWidth() / 2, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(sbmp, rect, rect, paint);
return output;
}
返回的是一张圆形的图片。下面是自定义的MyView类,对获取的图片进行处理,使图片绕中心旋转。代码如下:
public class MyView extends View {
private Bitmap bitmap1;
private Bitmap bitmap2;
private int degree = 0;// 扳手图像的当前角度
static boolean flag = false;
Handler handler;
// 视图的宽高
WindowManager wm = (WindowManager) getContext().getSystemService(
Context.WINDOW_SERVICE);
int viewWidth = wm.getDefaultDisplay().getWidth();
BitmapDrawable myImage;
public MyView(Context context) {
super(context);
setBackgroundColor(Color.WHITE);
bitmap1 = BitmapFactory.decodeResource(getResources(),
R.drawable.music_play_people);
bitmap2 = getCircularBitmap(bitmap1, 200);
myImage = new BitmapDrawable(bitmap2);
handler = new Handler();
handler.post(runnable);
}
private Runnable runnable = new Runnable() {
public void run() {
if (flag) {
postInvalidate();
}
handler.postDelayed(runnable, 50);
}
};
@Override
protected void onDraw(Canvas canvas) {
int width = bitmap2.getWidth();
int height = bitmap2.getHeight();
// 控制旋转角度在0-360之间
degree ++;
if (degree > 360)
degree = 0;
// 设置扳手图像的旋转角度和旋转轴心坐标(后两个参数,注意这个坐标是相对于屏幕的),该轴心也是图像的正中心
canvas.save();
canvas.rotate(degree, viewWidth / 3 - 45, 200);
myImage.setBounds(viewWidth / 3 - width - 45, 200 - height, viewWidth
/ 3 + width - 45, 200 + height);
myImage.draw(canvas);
canvas.restore();
}
}
在MainActivity中加载MyView对象,主activity代码如下:
public class MainActivity extends Activity {
private Button start, stop;
private RelativeLayout re;
private MyView view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
re = (RelativeLayout) findViewById(R.id.my_image);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
view = new MyView(this);
view.setLayoutParams(layoutParams);
re.addView(view);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.end);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyView.flag = true;
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyView.flag = false;
}
});
}
}
- android圆形图片的获取与图片绕中心旋转
- Android 仪表盘 图片 中心 旋转
- Android对图片进行旋转(绕图片中心)
- java 图片绕中心旋转
- Android自定义View实现不断旋转的圆形图片
- Android progressBar 自定义圆形旋转图片
- Android progressBar 自定义圆形旋转图片
- Android progressBar 自定义圆形旋转图片
- Android开发旋转圆形图片自定义View
- android利用matrix对图片中心旋转
- android利用matrix对图片中心旋转
- android canvas Rotate 图片中心旋转
- android获取图片的旋转角度
- Android图片与旋转
- Android图片与旋转
- FLEX里图片绕中心旋转
- [Android] 代码实现按钮/图片自旋转(中心旋转)
- Android实现图片的旋转与暂停
- eclipse 4.4以上不可以自动保存svn密码问题
- java环境配置
- android api相关(android sdk docs)eclipse下帮助文档
- iOS之触摸事件和手势
- To upload an excel file using WebDynpro Application.
- android圆形图片的获取与图片绕中心旋转
- css3
- erlang数据类型进程
- simpleProfileAttrTbl[]中的handle为什么是0
- uva 10422Knights in FEN
- 线程(中)
- ubuntu下安装mysql
- JS学习第一天----JS概述
- 二分法查找问题