4

我试图通过改变布局的边距来实现 Facebook 像拖动一样,但是即使我在视图上调用无效,那些总是留下痕迹

Facebook for android / ios 做到了,我想知道他们是怎么做到的,我到处都看到只有图像被拖放

我试图实现这样的东西但是它在我的应用程序中留下了痕迹

package com.example.dragdemo;

@SuppressLint({ "NewApi", "ParserError", "ParserError" })
public class MainActivity extends Activity {

TextView x;
TouchExampleView tex;
Context ctx=MainActivity.this;

private float mPosX=0;
private float mPosY=0;

private float mLastTouchX;
private float mLastTouchY;

LinearLayout redLinear;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tex=new TouchExampleView(ctx);

    redLinear=(LinearLayout)findViewById(R.id.newLinear);
    redLinear.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {

            //Log.e("action is ", event.getAction()+"");

            if(event.getAction()==MotionEvent.ACTION_MOVE)
            {
                //Toast.makeText(ctx, "comes in move", Toast.LENGTH_SHORT).show();

                if(((mPosX-(int) event.getX())>2002)||((mPosX-(int) event.getX())<2002)){

                    mPosX=(int) event.getX();
                    RelativeLayout.LayoutParams rl=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
                    //rl.addRule(RelativeLayout., anchor)

                    rl.setMargins((int) event.getX(), 0, 0, 0);

                    redLinear.setLayoutParams(rl);
                    redLinear.invalidate();

                }
            }
            return true;
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
}
4

1 回答 1

0

Jeremy Feinstein 的滑动菜单库是 Android 版 Facebook 应用风格菜单的出色实现。它没有你提到的线索问题。你可以在这里找到它:

github上的滑动菜单。

于 2012-11-15T13:34:46.610 回答