سؤال

أنا مبتدئ في تطوير Android. الآن أود أن أقوم بعرض المعرض مثل الصورة مثل الصورة أدناه. الأشياء هي أنني أريد تكبير صورة الأوسط عندما يقوم المستخدم بالتمرير من اليسار إلى اليمين إلى اليمين إلى اليسار. هل هناك أي دروسات تعليمية لذلك؟

enter image description hereما أريده هو أن الصورة التي تم تمريرها تحتاج إلى توسيعها أثناء وجودها في المركز. اعتقدت أنه يمكنني فعل ذلك مع المعرض. لكن المثال من مطور Android ليس هو المثال الذي أريده. :(

هل كانت مفيدة؟

المحلول


إذا كنت ترغب في تكبير الصورة المحددة المركزية ، فهناك طريقة واحدة ممكنة. على طريقة OnItemseced الخاصة بك ، ما عليك سوى الاتصال بالرسوم المتحركة لتكبير الكائن. خاصية المعرض هي أنه دائمًا ما يكون محفوظًا في المركز. لذلك سيتم دائمًا اختيار عنصر المركز. أتمنى أن يعمل ذلك ..

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:fillAfter="true"
>
<scale 
       android:fromXScale="1.0"
       android:toXScale="1.50"
       android:fromYScale="1.0"
       android:toYScale="1.50"
       android:duration="600"
       android:pivotX="50%"
       android:pivotY="50%"
       android:fillAfter="true"/>

</set>

تذكر أنه سيتعين عليك تخزين المنظر السابق لأنه عندما يتم الابتعاد عن العنصر بعيدًا عن الوسط ، يجب وضعه في الحجم العادي.

لذلك يمكنك الحصول على عرضين - Prefview و Currview.
هل الرسوم المتحركة على currview.

شكرًا،
سين

نصائح أخرى

يمكنك المحاولة:

public class TestGallery extends Activity {
/** Called when the activity is first created. */
private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4 }; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Gallery g = (Gallery) findViewById(R.id.gallery); 
    g.setAdapter(new ImageAdapter(this)); 

    g.setOnItemClickListener(new OnItemClickListener() { 
        public void onItemClick(AdapterView parent, View v, int position, long id) { 
            if (position >= mImageIds.length) { 
                position = position % mImageIds.length; 
            } 
            Toast.makeText(TestGallery.this, "" + position, Toast.LENGTH_SHORT).show(); 
        } 
    }); 

}

public class ImageAdapter extends BaseAdapter { 
    int mGalleryItemBackground; 
    private Context mContext; 

    public ImageAdapter(Context c) { 
        mContext = c; 
        TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); 
        mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0); 

        a.recycle(); 
    } 

    public int getCount() { 
        return Integer.MAX_VALUE; 
    } 

    public Object getItem(int position) { 
        if (position >= mImageIds.length) { 
            position = position % mImageIds.length; 
        } 
        return position; 
    } 

    public long getItemId(int position) { 
        if (position >= mImageIds.length) { 
            position = position % mImageIds.length; 
        } 
        return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
        ImageView i = new ImageView(mContext); 
        if (position >= mImageIds.length) { 
            position = position % mImageIds.length; 
        } 
        i.setImageResource(mImageIds[position]); 
        i.setLayoutParams(new Gallery.LayoutParams(80, 80)); 
        i.setScaleType(ImageView.ScaleType.FIT_XY); 
        i.setBackgroundResource(mGalleryItemBackground); 
        return i; 
    } 

    public int checkPosition(int position) { 
        if (position >= mImageIds.length) { 
            position = position % mImageIds.length; 
        } 
        return position; 
    } 
}}

لقد قمت بإنشاء البرنامج التعليمي الخاص بي لهذا:http://evgeni-shafran.blogspot.com/2011/08/tutorial-custom-gallery-circular-and.html

لكي تكون دائريًا ، تحتاج إلى جعلها تعتقد أن لديها الكثير من العناصر ، أكثر من ذلك بكثير.

ثم عن طريق وضع الموضع = الموضع ٪. ، 2،3،1،2،3،1،2،3 ثم انتقل إلى الوسط حتى لو كان التمرير كثيرًا لن يقترب من النهاية. 1،2،3،1،2،3،1،2،3 ،->1<-,2,3,1,2,3,1,2,3,1,2,3

لكي يتم تحديده: تحتاج إلى تجاوز SetOnitemSelectedListener ومعالجة الحجم. لا تنسَ حفظ إشارة إلى عرضك الأخير ، لذا عندما تصل إلى المرحلة التالية ، يمكنك جعلها تبدو منتظمة ، وليس موسعًا.

لقد قمت بتنفيذ كل من هذا في البرنامج التعليمي المذكور أعلاه

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top