我想将图像转换为另一个指定的位置..我在代码给出的代码中尝试这里。错误的方式翻译..在编程上将android的imageview(对象像按钮)原始(放置的位置)放置在屏幕上的另一个指定位置
请谁能帮助我走出这个问题..
package com.example.numbercount1;
import com.nineoldandroids.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class TestingAnimation extends Activity implements OnClickListener {
Button btn1 ,btn2 ;
float fromXposition ,fromYPosition , toXPosition , toYPosition ;
TranslateAnimation transAnimation ;
RelativeLayout mainScreen ;
ImageView imageOne , imageTwo , imageThree ;
float sourceX , sourceY , destinationX , destinationY ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testing_activity_main);
mainScreen = (RelativeLayout) findViewById(R.id.mainscreen);
imageOne = (ImageView) findViewById(R.id.imageView1);
imageTwo = (ImageView) findViewById(R.id.imageView2);
imageThree = (ImageView) findViewById(R.id.imageView3);
imageOne.setOnClickListener(this);
imageTwo.setOnClickListener(this);
imageThree.setOnClickListener(this);
readLocation("onCreate");
}
private void readLocation(String str) {
Log.v("hari", "str:"+str);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int offsetX = displayMetrics.widthPixels - mainScreen.getMeasuredWidth();
int offsetY = displayMetrics.heightPixels - mainScreen.getMeasuredHeight();
int[] locationInWindow = new int[2];
imageTwo.getLocationInWindow(locationInWindow);
int[] locationOnScreen = new int[2];
imageTwo.getLocationOnScreen(locationOnScreen);
sourceX = locationOnScreen[0];
sourceY = locationOnScreen[1];
Log.v("hari", "getLocationInWindow:--locationInWindow:"
+locationInWindow[0]+", locationInWindow:"+locationInWindow[1]);
Log.v("hari", "getLocationOnScreen:--locationInWindow:"
+locationOnScreen[0]+", locationInWindow:"+locationOnScreen[1]);
Log.v("hari", "readLocation:--offsetX:"+offsetX+", offsetY:"+offsetY);
Log.v("hari","---------------------------------------------");
int[] locationInWindowSecond = new int[2];
imageThree.getLocationInWindow(locationInWindowSecond);
int[] locationOnScreenSecond = new int[2];
imageThree.getLocationOnScreen(locationOnScreenSecond);
Log.v("hari","getLocationInWindow:--locationInWindowSecond:"
+locationInWindowSecond[0]+", locationInWindowSecond:"+locationInWindowSecond[1]);
Log.v("hari","getLocationOnScreen:--locationOnScreenSecond:"
+locationOnScreenSecond[0]+", locationOnScreenSecond:"+locationOnScreenSecond[1]);
Log.v("hari", "readLocation:--offsetX:"+offsetX+", offsetY:"+offsetY);
destinationX = locationOnScreenSecond[0];
destinationY = locationOnScreenSecond[1];
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
readLocation("onWindowFocusChanged");
}
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageView2 :
Log.v("hari", "onclick image button2");
fromXposition = v.getX() ;
fromYPosition = v.getY() ;
Log.v("hari", "fromXposition:"+fromXposition+"--fromYPosition:"+fromYPosition);
toXPosition = imageThree.getX() ;
toYPosition = imageThree.getY() ;
Log.v("hari", "toXPosition:"+toXPosition+"--toYPosition:"+toYPosition);
//transAnimation= new TranslateAnimation(sourceX, sourceY,
destinationX, destinationY);
transAnimation= new TranslateAnimation(sourceX, destinationX,sourceY,destinationY);
transAnimation.setDuration(3000);
v.startAnimation(transAnimation);
ObjectAnimator transAnimationNew= ObjectAnimator.ofFloat(v, "moving",
destinationX, destinationY);
transAnimationNew.setDuration(500);
transAnimationNew.start();
break;
default:
break;
}
}
}
----------------------------------------------------------------
testing_activity_main.xml.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/mainscreen"
tools:context=".MainActivity" >
<RelativeLayout
android:id="@+id/relative_subContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@drawable/curvedborder_new" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="184dp"
android:layout_toLeftOf="@+id/imageView2"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/imageView2"
android:layout_alignTop="@+id/imageView2"
android:layout_marginRight="139dp"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/imageView1"
android:layout_marginLeft="416dp"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
</RelativeLayout>
Thanks Advance
为什么不直接绘制位图? – pskink
我只想移动物体对于我来说已经足够了。我已经拍摄了对象x,y coordinates.this x,y只有正确的位置。但是,我不能移动对象在指定的地方。它移动错误的地方.. – harikrishnan
我的问题是两个地方最大。一个用于使用readLocation方法获取对象位置并指定transAnimation = new TranslateAnimation(sourceX,destinationX,sourceY,destinationY)上的位置; – harikrishnan