移动带动画的按钮,然后改变它们的位置

时间:2014-06-08 18:46:31

标签: java android objectanimator

我正在学习Java和Android SDK。我想创建一个简单的应用程序,交换2个按钮,使左边的一个移动到正确的位置和v.v.用简单的动画。我已经尝试过ObjectAnimator,因为我已经读过它正在永久地移动视图对象。但它不是:-(对象停留在那里我的意思是左边的那个和vv但是它们的getLeft(),getTop()值是相同的,并且在下一个动画开始后,对象立即返回到起始位置。已经读过ObjectAnimator需要一些额外的功能才能正常工作但是在文档中没有例子:-(我试图添加setTranslationX函数但它没有用。有人能给我提供一些简单的例子,说明怎么做此?

http://developer.android.com/guide/topics/graphics/prop-animation.html#object-animator

“您正在设置动画的对象属性必须以set()的形式具有setter函数(在camel情况下)。因为ObjectAnimator在动画期间自动更新属性,所以它必须能够使用此setter访问该属性例如,如果属性名称为foo,则需要使用setFoo()方法。如果此setter方法不存在,则有三个选项: 如果您有权这样做,请将setter方法添加到类中。 使用您有权更改的包装类,让该包装器使用有效的setter方法接收该值并将其转发给原始对象。 请改用ValueAnimator。“

提前致谢。

1 个答案:

答案 0 :(得分:11)

试试这段代码:

  

公共类ActivityStartup扩展了Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle("hello");
    setContentView(R.layout.main);

    SlidingMenu menu = new SlidingMenu(this);
    menu.setMode(SlidingMenu.SLIDING_WINDOW);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setBehindOffset(100);
    menu.setFadeDegree(0.35f);
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

    View view = G.layoutInflater.inflate(R.layout.menu, null);
    view.findViewById(R.id.layout_crop).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(G.context, "Crop Clicked", Toast.LENGTH_SHORT).show();
        }
    });

    view.findViewById(R.id.img_logo).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://example.com"));
            startActivity(browserIntent);
        }
    });

    menu.setMenu(view);
}

}

  

公共类G扩展了应用程序{

public static LayoutInflater layoutInflater;
public static Context        context;


@Override
public void onCreate() {
    super.onCreate();
    layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    context = getApplicationContext();
}

}

main.xml是:

  

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

menu.xml是:

  

<ImageView
    android:id="@+id/img_logo"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dip"
    android:scaleType="centerInside"
    android:src="@drawable/hlogo" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="2dip"
    android:background="#00ff00"
    android:src="@drawable/ic_launcher" />


<LinearLayout
    android:id="@+id/layout_crop"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    android:gravity="center_vertical" >

    <ImageView
        android:id="@+id/ImageView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dip"
        android:scaleType="centerInside"
        android:src="@android:drawable/ic_menu_crop" />

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Crop"
        android:textColor="#000000" />
</LinearLayout>


<LinearLayout
    android:id="@+id/layout_day"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    android:gravity="center_vertical" >

    <ImageView
        android:id="@+id/ImageView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dip"
        android:scaleType="centerInside"
        android:src="@android:drawable/ic_menu_day" />

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Day"
        android:textColor="#000000" />
</LinearLayout>


<LinearLayout
    android:id="@+id/layout_delete"
    android:layout_width="match_parent"
    android:layout_height="48dip"
    android:gravity="center_vertical" >

    <ImageView
        android:id="@+id/ImageView03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dip"
        android:scaleType="centerInside"
        android:src="@android:drawable/ic_menu_delete" />

    <TextView
        android:id="@+id/TextView03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Delete"
        android:textColor="#000000" />
</LinearLayout>