2013-11-25 67 views
0

我需要創建一個「滑動活動」,當用戶滑動它時滑動。當用戶向左滑動時,活動應滑動到左側,新活動將從右側進入屏幕。你不能把它放在中間。 Yahoo Mail應用程序也是一樣的。在閱讀郵件時可以看到此信息,並將郵件向左滑動以移至下一封郵件。它如下所示。將活動更改爲片段,以便「滑動活動」可能

enter image description here

在圖像中,可以看到下一個郵件(標題爲「謝謝」)是從側方開口。就我而言,他們是2種不同的活動。我們還可以在當前活動的右側顯示下一個活動的一小部分(如在Windows Phone中),這樣用戶就知道他必須滑動。無論如何,這部分現在是強制性的。

我試圖用this answer來做,但它不是我所追求的。請任何想法嗎?

注意

如果我去的片段,很多班級將被更改或重新完全編碼。

UPDATE

請看看下面的代碼。在這裏,當我滑動SalesInquiry.javaNewLead.java應該打開,具有上述解釋的效果。

DropDownMenu.java

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnTouchListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 

public class DropDownMenu extends Activity { 

    private TextView addInquiry, addEvent, additionalInfo, addToContacts; 

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

     //Intializing instance variables 
     addInquiry = (TextView)findViewById(R.id.menu_add_inquiry); 
     addEvent = (TextView)findViewById(R.id.menu_add_event); 
     additionalInfo = (TextView)findViewById(R.id.menu_additional_info); 
     addToContacts = (TextView)findViewById(R.id.menu_add_to_contacts); 

     //Register the Listeners 
     addInquiry.setOnClickListener(new AddInquiryEvent()); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.drop_down_menu, menu); 
     return true; 
    } 

    //Test Button 
    private class AddInquiryEvent implements OnClickListener 
    { 

     @Override 
     public void onClick(View arg0) 
     { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(DropDownMenu.this,NewLead.class); 
      startActivity(intent); 

     } 

    } 

    public void onMenuItemClicked(View view) { 
     switch (view.getId()) { 
     case R.id.menu_add_inquiry: 
      Intent intent = new Intent(DropDownMenu.this,NewLead.class); 
      startActivity(intent); 
      break; 
     default:; 
     } 
    } 

} 

SalesInquery.java

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnTouchListener; 
import android.view.Window; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

public class SalesInqury extends DropDownMenu { 

    private ImageView addNewSalesInqury; 
    private RelativeLayout salesInquryMainLayout; 
    private TextView testEditSales; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_sales_inqury); 

     //Intializing instance variables 
     addNewSalesInqury = (ImageView)findViewById(R.id.add_new_sales_inqury_btn); 
     salesInquryMainLayout = (RelativeLayout)findViewById(R.id.sales_inqury_main_layout); 
     testEditSales = (TextView)findViewById(R.id.testWord); 


     //Registering Event handlers 
     addNewSalesInqury.setOnClickListener(new addNewSalesInquryEvent()); 
     salesInquryMainLayout.setOnTouchListener(mainLayoutSwiped); 
     testEditSales.setOnClickListener(new OpenSalesDemo()); //TESTING DEMO!!!!! 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.sales_inqury, menu); 
     return true; 
    } 

    //Event Handler for Add New Sales Inquery Button 
    private class addNewSalesInquryEvent implements OnClickListener 
    { 

     @Override 
     public void onClick(View v) 
     { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(SalesInqury.this,NewLead.class); 
      startActivity(intent); 

     } 

    } 

    //SWIP LISTENER 
    private OnTouchListener mainLayoutSwiped = new OnSwipeTouchListener() 
    { 
     public boolean onSwipeLeft() 
     { 
      Intent intent = new Intent(SalesInqury.this,NewLead.class); 
      startActivity(intent); 
      return true; 
     } 
    }; 


    // 
    // 
    // TESTING FUNCTION!! 
    // 
    // 
    //Testing function for sales lead opening 
    private class OpenSalesDemo implements OnClickListener 
    { 

     @Override 
     public void onClick(View arg0) 
     { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(SalesInqury.this,EditLeads.class); 
      startActivity(intent); 

     } 

    } 

} 
+0

http://stackoverflow.com/a/15879886/1939564 –

回答

0

您可以使用片段而不是活動

嘗試viewpager庫,請參閱

http://viewpagerindicator.com/

+0

如果我去碎片,很多類將被改變或完全重新編碼。 –

+0

對不起傢伙!@ᴀʀᴜnBᴇrtiL但我認爲至少你是如此聰明,可以找到答案,如果它在那裏。對不起@Artificial_Intelligence但我不認爲有沒有其他的方式來做到這一點,而不使用片段。 – keshav

3
  User GestureDetector and in onFling() method check for the direction of swipe and start the activity accordingly 

      Edited: 
    Try this: 
      GestureDetector gestureDetector = new GestureDetector(
        simpleOnGestureListener); 

     SimpleOnGestureListener simpleOnGestureListener = new SimpleOnGestureListener() { 

       // Move The Background Theme To Select The Theme 
       @Override 
       public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
         float velocityY) { 

        float sensitvity = 100; 

        if ((e1.getX() - e2.getX()) > sensitvity) { 

    //Move right ,start new Activity here 
return true; 
     }else if ((e2.getX() - e1.getX()) > sensitvity) { 
    //Move left ,start new Activity here 
return true; 
     }else{ 
return false ; 
} 
} 

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     // TODO Auto-generated method stub 
     return (gestureDetector.onTouchEvent(event) || super 
       .onTouchEvent(event)); 
    } 
+0

我在Google羣組中也看到了rthis。你能舉個例子嗎? –

0

您可以直接使用片段精確SupportFragment和ViewPager,讓你通過不同的fragements刷卡。它在android.support.v4庫中可用。

+0

如果我使用片段,很多類將被更改或完全重新編碼。 –

+0

然後我必須看看你的代碼,因爲那樣我才能知道要做什麼。 – VishalKale

+0

請參閱編輯 –