我正在学习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。“
提前致谢。
答案 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>