ギャラリーを使用して、写真のドラッグの特殊効果を実現します(ソースコードを添付)

今日は非常に単純な関数を共有したいと思います。

Androidのネイティブコントロールギャラリーを使用して、写真のドラッグの特殊効果を実現します

実現のアイデアは次のとおりです。

  1. レイアウトファイルでギャラリーコントロールを定義する
  2. 複数の画像を表示する必要があるため、便宜上、Androidのネイティブ画像リソースを直接引用しました
  3. ギャラリーは単なるコントロールです。画像データをコントロールにバインドするには、BaseAdapterを継承するカスタムアダプターが必要です。

ソースコードは次のとおりです。

1.メインアクティビティとカスタム内部クラスImageAdapter:

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import com.example.memorydemo.R;

public class SimpleGallery extends Activity {

    private static final String TAG = "SimpleGallery";

    @Override
    protected void onCreate(Bundle onSavedInstance) {
        super.onCreate(onSavedInstance);
        setContentView(R.layout.simple_gallery_layout);

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

    private class ImageAdapter extends BaseAdapter {

        // 这里我们使用Android原生的资源图标
        private int[] imageIds = {
                android.R.drawable.btn_minus,
                android.R.drawable.btn_radio,
                android.R.drawable.ic_lock_idle_low_battery,
                android.R.drawable.ic_menu_camera };

        private Context mContext;

        public ImageAdapter(Context context) {
            mContext = context;
        }

        @Override
        public int getCount() {
            return imageIds.length;
        }

        @Override
        public Object getItem(int position) {
            return imageIds[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
           ImageView imageView;
            if (convertView == null) {
                Log.i(TAG, "convertView is null, create new imageview");
                imageView = new ImageView(mContext);
            } else {
                Log.i(TAG, "Cast convertView to ImageView");
                imageView = (ImageView) convertView;
            }

            imageView.setImageResource(imageIds[position]);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);

            // 注意这里要用Gallery.LayoutParams作为布局参数类型,源码中给出了建议(Views given to the Gallery should use 
            // Gallery.LayoutParams s their ayout parameters type)
            // 由于Android原生图片很小,我将高度设置为 500,方便看效果
            imageView.setLayoutParams(new Gallery.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 500));
            return imageView;
        }
    }
}

2.レイアウトファイルsimple_gallery_layout.xmlは次のとおりです。

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

    <Gallery
            android:id="@+id/gallery"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

</LinearLayout>

注意:

Galleryコントロールは非推奨になりました。ソースコードで説明されているように、代わりにHorizo​​ntalScrollViewとViewPagerを使用することをお勧めします。

@deprecatedこのウィジェットはサポートされなくなりました。その他の水平スクロールウィジェットには、サポートライブラリの{@linkHorizo​​ntalScrollView}と{@ linkandroid.support.v4.view.ViewPager}があります。

後で、Horizo​​ntalScrollViewとViewPagerの2つのコントロールがどのように使用されるかを共有します。

この記事は、ブロググループ投稿やマルチ投稿などのオペレーティングツールプラットフォームであるOpenWriteによって公開されています。

おすすめ

転載: blog.csdn.net/Xia_Leon/article/details/112920567