如何使用经纬度旋转图像

问题描述 投票:0回答:1

你好,我想通过经纬度来旋转图像视图假设我有

lat/LNG: (33.6343541968021,73.06278146803379)

现在我想我的图像的视图(针)点这个位置我可怎么办呢?我这样做

 public void onSensorChanged(SensorEvent event) {


                float degree = Math.round(event.values[0]);


        RotateAnimation ra1 = new RotateAnimation(
                currentDegree, 
                -degree,
                Animation.RELATIVE_TO_SELF, 0.5f, 
                Animation.RELATIVE_TO_SELF,
                0.5f);

        // how long the animation will take place
        ra1.setDuration(0);

        // set the animation after the end of the reservation status
        ra1.setFillAfter(true);
        compass_img.startAnimation(ra1);
        currentDegree= -degree;}

我使用方位传感器

android latitude-longitude android-orientation image-rotation compass-geolocation
1个回答
0
投票

试试这个方法

// Get the image we want to work with from a URL
Bitmap myBitmap = BitmapFactory.decodeStream(downloadImageFromWeb());

// or just load a resource from the res/drawable directory:
Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.android1);

// find the width and height of the screen:
Display d = getWindowManager().getDefaultDisplay();
int x = d.getWidth();
int y = d.getHeight();

// get a reference to the ImageView component that will display the image:
ImageView img1 = (ImageView)findViewById(R.id.img1);

// scale it to fit the screen, x and y swapped because my image is wider than it is tall
Bitmap scaledBitmap = Bitmap.createScaledBitmap(myBitmap, y, x, true);

// create a matrix object
Matrix matrix = new Matrix();
matrix.postRotate(-90); // anti-clockwise by 90 degrees

// create a new bitmap from the original using the matrix to transform the result
Bitmap rotatedBitmap = Bitmap.createBitmap(scaledBitmap , 0, 0, scaledBitmap .getWidth(), scaledBitmap .getHeight(), matrix, true);

// display the rotated bitmap
img1.setImageBitmap(rotatedBitmap);

检查Create our Android CompassRotating a Bitmap in Android

© www.soinside.com 2019 - 2024. All rights reserved.