view设置layout方法不起作用

java代码和xml布局文件如下:在布局加载完成之后,想设置imageview的位置在确定按钮的正上方,指点点击确定和取消按钮可以移动imageview,但是设置之后位置没有发生变化
package com.example.testmove;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.OvershootInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

private static ImageView iv;
private static Button btn1;
private static Button btn2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
int[] ivlocation = new int[2];
iv.getLocationInWindow(ivlocation);
int[] btnlocation = new int[2];
btn1.getLocationInWindow(btnlocation);
int ivwidth = iv.getWidth();
int btnwidth = btn1.getWidth();
int ivLeft = btnwidth / 2 - ivwidth/2;
// int ivLeft = ivlocation[0] - ivwidth / 2;
int ivTop = iv.getTop();
int ivRight = btnwidth / 2 + ivwidth/2;
// int ivRight = ivlocation[0] + ivwidth / 2;
int ivBottom = iv.getTop() + iv.getHeight();
iv.layout(ivLeft, ivTop, ivRight, ivBottom);
iv.requestLayout();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);

iv = (ImageView) rootView.findViewById(R.id.iv);
// LayoutParams params = new LayoutParams(0, 0);
// iv.setLayoutParams(params );
btn1 = (Button) rootView.findViewById(R.id.btn1);
btn2 = (Button) rootView.findViewById(R.id.btn2);

final Animation myAnimation_Translate = AnimationUtils
.loadAnimation(getActivity(), R.anim.my_translate_action);

final TranslateAnimation animation = new TranslateAnimation(52,
500, 0, 0);
animation.setDuration(500);// 设置动画持续时间
// animation.setRepeatCount(2);// 设置重复次数
// animation.setRepeatMode(Animation.REVERSE);// 设置反方向执行

btn1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

// int[] location = new int[2];
//
// btn1.getLocationOnScreen(location);
int width = btn1.getWidth();
//
//
// iv.startAnimation(animation);
// iv.setAnimation(animation);
// /** 开始动画 */
// animation.startNow();
slideview(0, width);
}
});
btn2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
int width = btn1.getWidth();
//
slideview(0, -width);
}
});

return rootView;
}
}

public static void slideview(final float p1, final float p2) {
TranslateAnimation animation = new TranslateAnimation(p1, p2, 0, 0);
// animation.setInterpolator(new OvershootInterpolator());
animation.setDuration(500);
// animation.setStartOffset(delayMillis);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}

@Override
public void onAnimationRepeat(Animation animation) {
}

@Override
public void onAnimationEnd(Animation animation) {
int left = iv.getLeft() + (int) (p2 - p1);
int top = iv.getTop();
int width = iv.getWidth();
int height = iv.getHeight();
iv.clearAnimation();
iv.layout(left, top, left + width, top + height);
}
});
iv.startAnimation(animation);
}

}


<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"
    tools:context="com.example.testmove.MainActivity$PlaceholderFragment" >

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="#F00"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="10dp"
            android:orientation="horizontal"
            android:weightSum="4" >
            <ImageView
                android:id="@+id/iv"
                android:layout_width="wrap_content"
                android:layout_height="10dp"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="#0F0"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/btn1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@drawable/mybtn"
                android:text="确定" />

            <Button
                android:id="@+id/btn2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:background="@drawable/mybtn"
                android:text="取消" />
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值