我是android的新手。我对视图翻板功能有疑问。我在视图翻板中有三个视图,当我双击第一个视图第三个视图时出现,当我双击第二个视图而不是第三个视图时,第一个视图出现。如何阻止这一点,以便双击它也只会进入下一个视图,任何想法?
这是代码
public class gif extends Activity {
ViewFlipper flipper;
// RelativeLayout r1 = (RelativeLayout)findViewById(R.id.second_view);
private Animation inFromTopAnimation() {
Animation inFromTop = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromTop.setDuration(1000);
inFromTop.setInterpolator(new AccelerateInterpolator());
return inFromTop;
}
private Animation outToBottomAnimation() {
Animation outtoBottom = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f
);
outtoBottom.setDuration(1000);
outtoBottom.setInterpolator(new AccelerateInterpolator());
return outtoBottom;
}
private Animation outToTopAnimation() {
Animation inFromTop = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
inFromTop.setDuration(1000);
inFromTop.setInterpolator(new AccelerateInterpolator());
return inFromTop;
}
private Animation outFromBottomAnimation() {
Animation outFromBottom = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f
);
outFromBottom.setDuration(1000);
outFromBottom.setInterpolator(new AccelerateInterpolator());
return outFromBottom;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
flipper = (ViewFlipper) findViewById(R.id.flipper);
ImageView imgview1 = (ImageView) findViewById(R.id.imageview1);
Button button2 = (Button) findViewById(R.id.flipback);
imgview1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flipper.setInAnimation(inFromTopAnimation());
flipper.setOutAnimation(outToBottomAnimation());
flipper.showNext();
}
});
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flipper.setInAnimation(outToTopAnimation());
flipper.setOutAnimation(outFromBottomAnimation());
flipper.showPrevious();
}
});
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
ImageView imgview1 = (ImageView)findViewById(R.id.imageview1);
imgview1.setVisibility(ImageView.VISIBLE);
imgview1.setBackgroundResource(R.anim.topimageview);
AnimationDrawable frameAnimation =
(AnimationDrawable) imgview1.getBackground();
if (frameAnimation.isRunning()) {
frameAnimation.stop();
}
else {
frameAnimation.stop();
frameAnimation.start();
}
ImageView imgview2 = (ImageView)findViewById(R.id.imageview2);
imgview2.setVisibility(ImageView.VISIBLE);
imgview2.setBackgroundResource(R.anim.rectbackground);
AnimationDrawable frameAnimation1 =
(AnimationDrawable) imgview2.getBackground();
if (frameAnimation1.isRunning()) {
frameAnimation1.stop();
}
else {
frameAnimation1.stop();
frameAnimation1.start();
}
ImageView imgview3 = (ImageView)findViewById(R.id.imageview3);
imgview3.setVisibility(ImageView.VISIBLE);
imgview3.setBackgroundResource(R.anim.background1);
AnimationDrawable frameAnimation2 =
(AnimationDrawable) imgview3.getBackground();
if (frameAnimation2.isRunning()) {
frameAnimation2.stop();
}
else {
frameAnimation2.stop();
frameAnimation2.start();
}
ImageView imgView = (ImageView)findViewById(R.id.imageview01);
imgView.setVisibility(ImageView.VISIBLE);
imgView.setBackgroundResource(R.anim.background);
AnimationDrawable frameAnimation3 =
(AnimationDrawable) imgView.getBackground();
if (frameAnimation3.isRunning()) {
frameAnimation3.stop();
}
else {
frameAnimation3.stop();
frameAnimation3.start();
}
ImageView imgview02 = (ImageView)findViewById(R.id.imageview02);
imgview02.setVisibility(ImageView.VISIBLE);
imgview02.setBackgroundResource(R.anim.background3);
AnimationDrawable frameAnimation5 =
(AnimationDrawable) imgview02.getBackground();
if (frameAnimation5.isRunning()) {
frameAnimation5.stop();
}
else {
frameAnimation5.stop();
frameAnimation5.start();
}
ImageView imgview03 = (ImageView)findViewById(R.id.imageview03);
imgview03.setVisibility(ImageView.VISIBLE);
imgview03.setBackgroundResource(R.anim.background2);
AnimationDrawable frameAnimation4 =
(AnimationDrawable) imgview03.getBackground();
if (frameAnimation4.isRunning()) {
frameAnimation4.stop();
}
else {
frameAnimation4.stop();
frameAnimation4.start();
}
ImageView imgview04 = (ImageView)findViewById(R.id.imageview4);
imgview04.setVisibility(ImageView.VISIBLE);
imgview04.setBackgroundResource(R.anim.background4);
AnimationDrawable frameAnimation6 =
(AnimationDrawable) imgview04.getBackground();
if (frameAnimation6.isRunning()) {
frameAnimation6.stop();
}
else {
frameAnimation6.stop();
frameAnimation6.start();
}
;
final ImageView hearttap =(ImageView)findViewById(R.id.hearttap);
// final View second = null ;
Button ekgbutton = (Button)findViewById(R.id.ekgbutton);
final ImageView i2 = (ImageView) findViewById(R.id.imageview02);
final ImageView i3 = (ImageView) findViewById(R.id.imageview03);
final ImageView i4 = (ImageView) findViewById(R.id.imageview04);
final ImageView i5 = (ImageView) findViewById(R.id.imageview05);
final ImageView i6 = (ImageView) findViewById(R.id.imageview06);
final ImageView i7 = (ImageView) findViewById(R.id.imageview07);
hearttap.setOnTouchListener(new View.OnTouchListener() {
private 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(500);
inFromRight.setInterpolator(new AccelerateInterpolator());
return inFromRight;
}
private 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(500);
outtoLeft.setInterpolator(new AccelerateInterpolator());
return outtoLeft;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
// r1.setVisibility(View.GONE);
i2.setVisibility(View.GONE);
i3.setVisibility(View.GONE);
i4.setVisibility(View.GONE);
i5.setVisibility(View.GONE);
i6.setVisibility(View.GONE);
i7.setVisibility(View.GONE);
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.showNext();
// flipper.getChildAt(2)
flipper.setDisplayedChild(2);
// WebView webview1= (WebView)findViewById(R.id.ekgwebview1);
// webview1.loadUrl("C://Users/Android/Desktop/bg only.gif");
// flipper.clearDisappearingChildren();
// flipper.dispatchWindowVisibilityChanged(2);
flipper.setEnabled(true);
if (hearttap.onTouchEvent(event))
return true;
else
return false;
}
});
ekgbutton.setOnTouchListener(new View.OnTouchListener() {
private 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(500);
inFromLeft.setInterpolator(new AccelerateInterpolator());
return inFromLeft;
}
private 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(500);
outtoRight.setInterpolator(new AccelerateInterpolator());
return outtoRight;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
i2.setVisibility(View.GONE);
i3.setVisibility(View.GONE);
i4.setVisibility(View.GONE);
i5.setVisibility(View.GONE);
i6.setVisibility(View.GONE);
i7.setVisibility(View.GONE);
flipper.setInAnimation(inFromLeftAnimation());
flipper.setOutAnimation(outToRightAnimation());
flipper.showPrevious();
flipper.setEnabled(true);
// flipper.getChildAt(0);
flipper.setDisplayedChild(0);
return true;
}
});
}
}
答案 0 :(得分:0)
问题在于设置显示子项
在按钮上单击ekgbutton
您已设置flipper.setDisplayedChild(0);
,这意味着将打开第一个视图。将其设为flipper.setDisplayedChild(2);
flipper.setDisplayedChild(0) = display first view
flipper.setDisplayedChild(1) = display second view
flipper.setDisplayedChild(2) = display third view
答案 1 :(得分:0)
您可以创建一个hasmap,将cutton对象存储为键,然后单击counter作为值。如果计数器的模数除数为零,则在每次单击时递增计数器,然后设置取消显示视图。通过这种方式,您可以处理双击事件。
由于 苏尼
答案 2 :(得分:0)
Jamesdroid我也遇到了同样的问题,问题的解决方案就是这样 1.单击功能检查按下哪个按钮_ 在你的情况下你有3个视图让它为v1,v2和v3现在也让你包括3个按钮,如按钮上的标签点击你将显示相应的标签。 2. 再次点击内部按钮,检查当前视图处于活动状态或显示,然后根据当前视图通过view.ShowNext()进入所需视图。
以下是您推荐的代码,其中我有三个观看次数(view_beverages,view_dimsum,view_appetizers)和theree按钮(标签)。
ViewFlipper mVf =(ViewFlipper)findViewById(R.id.MyViewFlipper); //我的ViewFilpper显示3个标签(1.Beverages,2.DimSum,3.Appetizers) public void onClick(查看v){ // Beverages选项卡点击 if(v == btn_beverages){
btn_beverages.setBackgroundResource(R.drawable.beverages_on);
btn_dimsum.setBackgroundResource(R.drawable.dimsum_off);
btn_appetizers.setBackgroundResource(R.drawable.appetizers_off);
View myCurrentView = mVf.getCurrentView();//Collecting the current displayed view.
if (myCurrentView == view_beverages) {
}
if (myCurrentView == view_dimsum) {
mVf.showNext();
mVf.showNext();
}
if (myCurrentView == view_appetizer) {
mVf.showNext();
}
}
// Dimsum tab click
if (v == btn_dimsum) {
btn_beverages.setBackgroundResource(R.drawable.beverages_off);
btn_dimsum.setBackgroundResource(R.drawable.dimsum_on);
btn_appetizers.setBackgroundResource(R.drawable.appetizers_off);
View myCurrentView = mVf.getCurrentView();
if (myCurrentView == view_beverages) {
mVf.showNext();
}
if (myCurrentView == view_dimsum) {
}
if (myCurrentView == view_appetizer) {
mVf.showNext();
mVf.showNext();
}
}
// Appetizer tab click
if (v == btn_appetizers) {
btn_beverages.setBackgroundResource(R.drawable.beverages_off);
btn_dimsum.setBackgroundResource(R.drawable.dimsum_off);
btn_appetizers.setBackgroundResource(R.drawable.appetizers_on);
View myCurrentView = mVf.getCurrentView();
if (myCurrentView == view_beverages) {
mVf.showNext();
mVf.showNext();
}
if (myCurrentView == view_dimsum) {
mVf.showNext();
}
if (myCurrentView == view_appetizer) {
}
}