本文介绍了触摸Android旋转具有按钮或图像的布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




可以提出一些示例代码,通过这些示例代码,我们可以旋转具有触摸图像的布局..从2周开始尝试,但无法成功.

请检查我的代码,我无法明显旋转画布


Hi,


Can any suggest some sample codes, with which we can rotate layout having images on touch .. am trying from 2 weeks but am not able to succeed.

Please check my code , i cant visibly rotate the canvas


private void rotateDialer(float degrees) {
		//matrix.postRotate(degrees, dialerWidth / 2, dialerHeight / 2);


		//dialer.setImageMatrix(matrix);

		 layout.setNextRotation(degrees, dialerWidth / 2, dialerHeight  / 2,matrix);
		// view.requestLayout();
	//	 view.requestFocus();
		 layout.postInvalidate();
		 layout.invalidate();
		// view.invalidate();


		 //   dialer.invalidate();
	}



这是我的自定义视图类:



and this my custom view class :

<pre lang="java">package de.vrallev.tutorial.dialer;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class RotateLinearLayout extends RelativeLayout{

    private Matrix mForward = new Matrix();
    private Matrix mReverse = new Matrix();
    private float[] mTemp = new float[2];

    AbsoluteLayout dialView;

    ImageView ab,fc,pic,co,pr,ref,tw,you;

    private Context mContext;
    private ArrayList<ImageView> imageViews=new ArrayList<ImageView>();
    private Integer[] drawables={R.drawable.aboutus_btn,R.drawable.coworkers_btn,R.drawable.profile_btn,R.drawable.picasa_btn,R.drawable.youtube_btn,R.drawable.twitter_btn,R.drawable.facebook_btn,R.drawable.referral_btn};

    float degrees;
    float px,screenW;
    float py,screenH;


    public RotateLinearLayout(Context context) {
        super(context);
        mContext=context;
        init();
    }

    public RotateLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext=context;
        init();
    }

    public void init(){

    	setWillNotDraw(false);
    	 LayoutInflater inflator = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    	 dialView = (AbsoluteLayout) inflator.inflate(R.layout.new_view, this,false);



    	    addView(dialView);

    	}


    	public void setNextRotation(float degrees, float px, float py,Matrix matrix)
    	{
    	    this.degrees = degrees;
    	    this.px = px;
    	    this.py = py;
    	    screenW=px;
    	    screenH=py;
    	    System.out.println("....next");
    	   // invalidate();
    	}

    @Override
    protected void onDraw(Canvas canvas) {

    	//Bitmap.Config config = loadBitmapFromView(this).getConfig();
    	//Bitmap targetBitmap = Bitmap.createBitmap((loadBitmapFromView(this)).getWidth(), (loadBitmapFromView(this)).getHeight(),config);
    	canvas.save(Canvas.MATRIX_SAVE_FLAG);
		{
			canvas.translate(px,py);

			float rotation = degrees;
			float midX = px / 2.0f;
			float midY = py / 2.0f;

			canvas.rotate(rotation, midX, midY);
			//outerLayer.drawOn(canvas, 0, 0);
			canvas.rotate(- rotation, midX, midY);
		}
		canvas.restore();
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        event.setLocation(getWidth() - event.getX(), getHeight() - event.getY());
        return super.dispatchTouchEvent(event);
    }

    @Override
    public void onSizeChanged (int w, int h, int oldw, int oldh){
      super.onSizeChanged(w, h, oldw, oldh);

      screenW = w;
      screenH = h;
    }


}



在OnDraw方法中也获得了角度度值,但是视图没有旋转.


谢谢
Uday



am getting angle degree values in OnDraw method also, but view is not rotating.


Thanks
Uday

推荐答案



这篇关于触摸Android旋转具有按钮或图像的布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 12:49
查看更多