2012-11-25 3 views
10

Uygulamamda, içinde resim düğmeleri bulunan bir sürgülü çekmece var ve tıklandığında görüntü açıklaması ve bilgi görüntüleniyor. Bu yüzden temel olarak sadece bir XML dosyası ve bunun için bir Java dosyası kullanıyorum. (Ancak, görüntülenmek için daha fazla görüntü düğmesi ve görüntü eklemenin biraz zaman aldığını fark ettim). Ve şimdi API 17, sürgülü çekmeceyi onaylamıyor olduğundan, uygulamanın gelecekteki yüklemeleri beni biraz endişelendiriyor. Şimdi benim sorum, sürgülü çekmece veya spinner kullanmadan bunu başarmanın alternatif bir yolu var. Her görüntü için bir xml ve java dosyası oluşturmak istemiyorum (100+ xml ve java ile bitireceğim) İşte benim şu anki kodum.Şu an kullanımdan bu yana kullanımdan kaldırılmış olan bir sürgüyü uygulamak için alternatif bir yol 17

XML:

<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"> 

<ScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

<ImageView 
    android:id="@+id/iM1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="fitStart" 
    android:adjustViewBounds="true"/> 

</RelativeLayout> 
</ScrollView> 

<SlidingDrawer 
    android:id="@+id/sD1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:content="@+id/content" 
    android:handle="@+id/handle"> 

    <Button 
     android:id="@+id/handle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/icon_1" /> 

    <RelativeLayout 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/icon_background1"> 

     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" > 

       <Button 
        android:id="@+id/asample" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@drawable/imageicon1"/> 
        ..... 

Ve Java:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.campsites); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    final SlidingDrawer slider = (SlidingDrawer) findViewById(R.id.sD1); 
    final ImageView imageView = (ImageView) findViewById(R.id.iM1); 
    slider.animateOpen(); 

    Button next = (Button) findViewById(R.id.asample); 
    Button next1 = (Button) findViewById(R.id.bsample); 
    .......... 

    next.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View view) { 
      imageView.setImageDrawable(getResources().getDrawable(R.drawable.asample)); 
      slider.animateClose(); 
     } 
    }); 
    next1.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View view) { 
      imageView.setImageDrawable(getResources().getDrawable(R.drawable.bsample)); 
      slider.animateClose(); 
     } 
    }); 
    ............ 

kimse yardım ya ne yapılması bir öneri alabilir miyim?

cevap

0

i This iyi bir alternatif
AFAIK o SlidingDrawer kullanmaz ve bu doğru sola, bir SlidingDrawer olduğunu

3

çekmecenin yönünü değiştirebilir düşünüyor? Eğer öyleyse, DrawerLayout'a bakabilirsiniz.

Bu Android Destek Kütüphanesi bir parçasıdır ve bunun yerine oldukça sade bununla XML'inizi değiştirip bu sayfadan API4

geriye doğru uyumlu olacak şekilde mümkün olmalıdır, örnek vardır.

  • ana içerik görünümü (yukarıda FrameLayout) DrawerLayout çünkü ilk çocuk olmalıdır: o sayfada

    Bu düzen gelen

    <android.support.v4.widget.DrawerLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/drawer_layout" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 
        <!-- The main content view --> 
        <FrameLayout 
         android:id="@+id/content_frame" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" /> 
        <!-- The navigation drawer --> 
        <ListView android:id="@+id/left_drawer" 
         android:layout_width="240dp" 
         android:layout_height="match_parent" 
         android:layout_gravity="start" 
         android:choiceMode="singleChoice" 
         android:divider="@android:color/transparent" 
         android:dividerHeight="0dp" 
         android:background="#111"/> 
    </android.support.v4.widget.DrawerLayout> 
    

    bazı notlar bazı önemli düzen özelliklerini gösterir XML sırasına göre z siparişi verilir ve çekmecenin içeriğin üstünde olması gerekir. Ana içerik görünümü, ana görünümün genişliğini ve yüksekliğini eşleştirmek için olarak ayarlanmıştır, çünkü gezinme çekmecesi gizlendiğinde tüm kullanıcı arabirimini temsil eder.

  • Çekmece görünümü (ListView), android: layout_gravity özelliği ile yatay çekim değerini belirtmelidir. Sağdan sola (RTL) dilleri desteklemek için, değeri "left" yerine "start" ile belirtin (böylece, düzen RTL olduğunda sağdaki çekmece ).
  • Çekmece görünümü, genişliğini dp birimlerinde belirtir ve yükseklik ana görünümle eşleşir. Çekmece genişliği, 320dp 'dan daha fazla olmamalıdır, böylece kullanıcı her zaman ana içeriğin bir bölümünü görebilir.

Çoğunlukla fark DrawerLayout üst düzey olması ve bunun içinde XML koydu. Böyle Yani bir şey (tamamen denenmemiş):

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- your content surrounded by a layout to signify that it's actually content --> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ScrollView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <RelativeLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 

       <ImageView 
        android:id="@+id/iM1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:scaleType="fitStart" 
        android:adjustViewBounds="true"/> 

      </RelativeLayout> 
     </ScrollView> 
    </RelativeLayout> 
    <!-- your sliding menu in its own layout --> 
    <LinearLayout 
     android:layout_gravity="start" 
     android:layout_width="240dp" 
     android:layout_height="wrap_content"> 
     <Button 
      android:id="@+id/handle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/icon_1" /> 

     <RelativeLayout 
      android:id="@+id/content" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/icon_background1"> 

      <ScrollView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

       <RelativeLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" > 

        <Button 
         android:id="@+id/asample" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:background="@drawable/imageicon1"/> 
         ..... 
    </LinearLayout> 
</android.support.v4.widget.DrawerLayout> 
1

Daha doğrusu kendimi yarattı, basit bir kayma menü öneririm.

kavram ı başlangıçta

Sürgü düğmesi ve içerik paneli

kullanılan bunu tıkladığınızda (bizim örneğimizde) düğmesine solunda kaydırıcısıyla, bu kaydırır ve içerik bölmesi görünür hale getirilir i achieived nasıl

bu

bıraktım marjı ile oynanan

, bu nedenle kaydırıcı düğmesine conte bastığınızda nt pane (başlangıçta gizli) screen_width/3 kadar geniş olur ve tekrar bastığınızda onu gizler ..

heres benim kodum.

public class MainActivity extends Activity { 
    boolean toggle_open=false; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 




    } 

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

    public void open(View v){ 
     switch (v.getId()) { 
     case R.id.imageButton1: 
      if(!toggle_open){ 
      RelativeLayout header=(RelativeLayout)findViewById(R.id.header); 
      Display size=getWindow().getWindowManager().getDefaultDisplay(); 
      int widthby2=size.getWidth()/3; 
      RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 
      lp.setMargins(size.getWidth()/2, 0, 0, 0); 
      header.setLayoutParams(lp); 

      RelativeLayout slider=(RelativeLayout)findViewById(R.id.panel); 
      slider.setLayoutParams(new RelativeLayout.LayoutParams((size.getWidth()/2),size.getHeight())); 
      slider.setVisibility(View.VISIBLE); 

      toggle_open=true; 
      } 
      else{ 
       RelativeLayout header=(RelativeLayout)findViewById(R.id.header); 
       RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 
       lp.setMargins(0, 0, 0, 0); 
       header.setLayoutParams(lp); 

       RelativeLayout slider=(RelativeLayout)findViewById(R.id.panel); 
       slider.setVisibility(View.GONE); 
       toggle_open=false; 

      } 
      break; 

     default: 
      break; 
     } 
    } 



} 

// xml kodu

<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" 
    tools:context=".MainActivity" > 

    <RelativeLayout 
     android:id="@+id/header" 
     android:background="@android:color/black" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:padding="20dp" > 

     <ImageButton 
      android:id="@+id/imageButton1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:background="@android:color/black" 
      android:onClick="open" 
      android:src="@android:drawable/ic_dialog_dialer" /> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBottom="@+id/imageButton1" 
      android:layout_toRightOf="@+id/imageButton1" 
      android:text="Admin Panel" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textColor="@android:color/white" /> 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/panel" 
     android:visibility="gone" 
     android:layout_toLeftOf="@+id/header" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:background="@android:color/darker_gray" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 

     <fragment class="com.example.avanse.FragmentLayout$TitlesFragment" 
      android:id="@+id/titles" 
      android:layout_width="match_parent" android:layout_height="match_parent"/> 

    </RelativeLayout> 

</RelativeLayout> 
0

düz android Eğer DrawerLayout kullanabilirsiniz. , ancak kullanıcı ve programlayıcı için daha kullanışlı bir özellik olan SlidingMenu lib'u öneririm.

+0

DrawerLayout ayrıca eski Android sürümleriyle de çalışır. v4 destek kitaplığındadır. – NasaGeek

+0

Haklısınız - Cevabımı düzeltmek için düzenleyeceğim –

1

Uygulama Umano'nun adamlarından SlidingUpPanel şu anda en iyi yol gibi görünüyor. vertical DrawerLayout or SlidingPaneLayout :: D

Düzenleme: Ben bu diğer SOF sonrası bu konuda bilgi bulunamadı https://github.com/umano/AndroidSlidingUpPanel

: Bunu bulabilirsiniz https://github.com/6wunderkinder/android-sliding-layer-lib youtube videoda (iş gibi görünüyor: Bu da aynı zamanda çok umut verici görünüyor Sadece sağdan sola ve soldan sağa, ama gerçek demo uygulamasını indirirseniz, aşağıdan yukarı ve yukarıdan aşağıya doğru gitmenin de mümkün olduğunu göreceksiniz)