gpt4 book ai didi

android - 如何创建滑动布局,如主 android 菜单?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:11 24 4
gpt4 key购买 nike

我需要创建一个具有 4 个 View 的应用程序。我需要通过触摸和向左或向右移动(无按钮)从一个 View 传递到另一个 View 。我想要的效果与您在 android 的主菜单中导航时从一个页面传递到另一个页面时看到的效果相同。

我已经测试了 ViewFlipper,但我无法使用它:它似乎没有正确捕获触摸事件。我什至不知道它是否是正确的组件。

处理这个问题的正确方法是什么?

最佳答案

我终于成功了。这是我的解决方案。首先,您需要定义一个包含子布局的主布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>


<ViewFlipper android:id="@+id/ViewFlipper01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include android:id="@+id/libraryView1" layout="@layout/page_1" />
<include android:id="@+id/libraryView2" layout="@layout/page_2" />


</ViewFlipper>

</RelativeLayout>

其中 page_1 和 page_2 是我需要交换的布局。这些版面绝对是标准版面,随心所欲。

然后你需要一个 Activity :

public class Main extends Activity {

private ViewFlipper vf;

private float oldTouchValue;

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

vf=(ViewFlipper)findViewById(R.id.ViewFlipper01);
}

@Override
public boolean onTouchEvent(MotionEvent touchevent) {
switch (touchevent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
oldTouchValue = touchevent.getX();
break;
}
case MotionEvent.ACTION_UP:
{
//if(this.searchOk==false) return false;
float currentX = touchevent.getX();
if (oldTouchValue < currentX)
{
vf.setInAnimation(inFromLeftAnimation());
vf.setOutAnimation(outToRightAnimation());
vf.showNext();
}
if (oldTouchValue > currentX)
{
vf.setInAnimation(inFromRightAnimation());
vf.setOutAnimation(outToLeftAnimation());
vf.showPrevious();
}
break;
}
}
return false;
}

//for the previous movement
public static Animation inFromRightAnimation() {

Animation inFromRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromRight.setDuration(350);
inFromRight.setInterpolator(new AccelerateInterpolator());
return inFromRight;
}
public static Animation outToLeftAnimation() {
Animation outtoLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
outtoLeft.setDuration(350);
outtoLeft.setInterpolator(new AccelerateInterpolator());
return outtoLeft;
}
// for the next movement
public static Animation inFromLeftAnimation() {
Animation inFromLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromLeft.setDuration(350);
inFromLeft.setInterpolator(new AccelerateInterpolator());
return inFromLeft;
}
public static Animation outToRightAnimation() {
Animation outtoRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
outtoRight.setDuration(350);
outtoRight.setInterpolator(new AccelerateInterpolator());
return outtoRight;
}
}

多田!完成!

关于android - 如何创建滑动布局,如主 android 菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com