关闭

旋转ImageView

220人阅读 评论(0) 收藏 举报
分类:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

package aurobot.interjoy.com.angleimageview;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.Window;
import android.widget.ImageView;

public class XuanZhuanActivity extends Activity {
    private ImageView iv_avoid;
    private int[] num = {0, 0, 0, 0, 0};//方位预警数据,0代表安全,为白色雷达,1代表危险,为红色雷达
    private int[] angles = {-45, 45, -135, 180, 135};//雷达图标分别需要旋转的角度

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_xuan_zhuan);
        iv_avoid = (ImageView) findViewById(R.id.myIV);
        mergeBitmap(getBitmaps(num));
    }

    /**
     * 根据方位预警数据数组 返回对应颜色雷达图标的数组
     *
     * @param info 方位预警数据数组
     * @return
     */
    private Bitmap[] getBitmaps(int[] info) {
        Bitmap[] lines = new Bitmap[info.length];
        for (int i = 0; i < info.length; i++) {
            if (1 == info[i]) {
                lines[i] = BitmapFactory.decodeResource(getResources(), R.drawable.red_line);
            } else if (0 == info[0]) {
                lines[i] = BitmapFactory.decodeResource(getResources(), R.drawable.white_line);
            }
        }
        return lines;
    }

    /**
     * 绘制图片
     *
     * @param bitmaps 雷达图标的数组
     */
    private void mergeBitmap(Bitmap[] bitmaps) {
        //兔子图片对象
        Bitmap rabitRes = BitmapFactory.decodeResource(getResources(), R.drawable.rabit_line);
        //获取屏幕宽高做适配
        Display defaultDisplay = getWindowManager().getDefaultDisplay();
        DisplayMetrics metrics = new DisplayMetrics();
        defaultDisplay.getMetrics(metrics);
        int height = metrics.heightPixels;//此界面是横屏,所以高度为720或者1080

        float canvasW_H = height * 200 / 720;//画布宽高(720屏幕中是200)
        float centerX = canvasW_H / 2;//雷达的旋转中心X坐标(100,100)
        float centerY = canvasW_H / 2;//雷达的旋转中心Y坐标
        float startX = canvasW_H * 55 / 200;//画雷达的起始位置X坐标(55,0)
        Log.d("@@@", "startX==" + startX);
        float startY = 0.0f;//画雷达的起始位置Y坐标
        float rabitX = startX;//画兔子起始位置X坐标(55,55)
        float rabitY = rabitX;//画兔子起始位置Y坐标

        //新建画笔,为了画圆形背景
        float radius = centerX;//半径 100,等值于,圆心XY坐标
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setARGB(76, 0, 0, 0);//透明度30%   0-255, 0是完全透明
        paint.setStrokeWidth(radius);//设置画笔宽度 为圆的半径,即实心圆

        //新建画布
        Bitmap bitmap2 = Bitmap.createBitmap((int) canvasW_H, (int) canvasW_H, bitmaps[0].getConfig());
//        Bitmap bitmap2 = Bitmap.createBitmap((int) canvasW_H, (int) canvasW_H, Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(bitmap2);
        canvas.drawCircle(centerX, centerY, radius, paint);//画圆
        //绘制各个方向的雷达
        for (int i = 0; i < bitmaps.length; i++) {
            canvas.save();
            canvas.rotate(angles[i], centerX, centerY);
            canvas.drawBitmap(bitmaps[i], startX, startY, null);
            canvas.restore();
        }
        //绘制中心兔子
        canvas.drawBitmap(rabitRes, rabitX, rabitY, null);
        Log.d("@@@", "rabitX==" + rabitX);
        iv_avoid.setImageBitmap(bitmap2);
    }
}
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

android学习记录(二)-----imageView实现图片的旋转和缩放

感觉在代码中写出解析会比较好看,我直接在程序代码中解析所用的方法吧。 MainActivity: package com.example.imageview_demo03; import android.support.v7.app.ActionBarActivity; import andr...
  • zuolovefu
  • zuolovefu
  • 2014-11-12 18:13
  • 2093

Android实现ImageView的旋转动画

本文主要介绍如何使用RotatationAnimation和ObjectionAnimation实现ImageView不同旋转的动画。
  • coralline_xss
  • coralline_xss
  • 2015-12-29 16:53
  • 11938

Android之UI学习篇六:ImageView实现图片旋转和缩放

这一篇,给大家介绍一下ImageView控件的使用,ImageView主要是用来显示图片,可以对图片进行放大、缩小、旋转的功能。 android:sacleType属性指定ImageVIew控件显示图片的方式,例如:center表示图像以不缩放的方式显示在ImageView控件的中心,如果设置为f...
  • wulianghuan
  • wulianghuan
  • 2013-02-17 20:15
  • 28550

Android UI:看看Google官方自定义带旋转动画的ImageView-----RotateImageView怎么写(附 图片淡入淡出效果)

众所周知,想要让ImageView旋转的话,可以用setRotation()让其围绕中心点旋转,但这个旋转是不带动画的,也就是旋转屏幕时图片噌的一下就转过去了,看不到旋转的过程,此UI体验不大好,为此需要自定义带旋转动画的ImageView.虽然Google SDK里基本控件里没有,但在Camera...
  • yanzi1225627
  • yanzi1225627
  • 2014-03-29 00:38
  • 29678

自定义ImageView来实现图片旋转

首先,自定义ImageView类 RotatingImageView.javapackage ui;import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; i...
  • wnl_csdn
  • wnl_csdn
  • 2016-09-07 16:22
  • 702

Android 可平移,缩放,旋转的ImageView

public class TouchImageView extends ImageView {          private static final String TAG = TouchImageView.class.getSimpleNa...
  • yangxi_001
  • yangxi_001
  • 2014-08-11 17:26
  • 1227

iOS开发 UIimage旋转,得到旋转后的Image图片,解决imageView旋转,内部图片不跟着旋转问题

一:前言  1.0  : 图片处理中,比如对一个ImageView进行旋转,那么旋转后图片缺还是原来的样子,本文就是解决图片旋转的问题  1.0 :无demo说话不硬气,上github地址:https://github.com/horisea/PictureWhit...
  • horisea
  • horisea
  • 2017-04-21 15:21
  • 1921

自定义ImageView 实现双击放大缩小还原,无极缩小和旋转及拖动(多机型测试很稳定)

/** * 该模块主要实现了放大和原大两个级别的缩放。 功能有: 1.以触摸点为中心放大(这个是网上其他的代码没有的) 2.取消边界控制(这个是网上其他的代码没有的)也可以添加边界控制 3.双击放大或缩小(主要考虑到电阻屏) 4.多点触摸放大和缩小 这个模块已经通过了测试,并且用户也使用有一段时间...
  • gfg156196
  • gfg156196
  • 2015-11-09 17:19
  • 1453

Android 使用变形矩阵实现可以拖拽,缩放,旋转的图像

上篇博文介绍了变形矩阵的一些用法,所以这篇博文就结合变形矩阵来实现一个可以拖拽、缩放、旋转的图像吧。首先,我们就继承ImageView来实现我们的自定义View。
  • Luo_xinran
  • Luo_xinran
  • 2016-09-18 20:42
  • 2334

android 部分手机拍照后在imageView中显示预览图片被旋转的问题

在部分Android手机(如MT788、Note2)上,使用Camera拍照以后,得到的照片会被自动旋转(90°、180°、270°),这个情况很不符合预期。仔细分析了一下,因为照片属性中是存储了旋转信息的,所以要解决这个问题,可以在onActivityResult方法...
  • l506945024
  • l506945024
  • 2016-09-22 15:06
  • 1156
    个人资料
    • 访问:164499次
    • 积分:3273
    • 等级:
    • 排名:第11615名
    • 原创:159篇
    • 转载:14篇
    • 译文:0篇
    • 评论:23条
    文章分类
    最新评论