国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

利用DrawerLayout和觸摸事件分發實現抽屜側滑效果

2019-10-22 18:25:08
字體:
來源:轉載
供稿:網友

本文實例為大家分享了DrawerLayout和觸摸事件分發實現抽屜側滑效果的具體代碼,供大家參考,具體內容如下

效果展示

DrawerLayout,抽屜側滑

還是看代碼實在,直接上菜了。

1.MainActivity的代碼:

public class MainActivity extends AppCompatActivity implements  MyDraweLayout.GetPositionCallback {    private List<ImageView> imageList;    private ViewPager viewPager;    private MyAdapter adapter;    private MyDraweLayout myDraweLayout;    private int currentPosition;    @Override    protected void onCreate (Bundle savedInstanceState){    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    viewPager = (ViewPager) findViewById(R.id.viewpager);    myDraweLayout = (MyDraweLayout) findViewById(R.id.mydrawelayout);    initdata();    adapter = new MyAdapter(this, imageList);     myDraweLayout.setCallback(this);    viewPager.setAdapter(adapter);      viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {        @Override        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        }        @Override        public void onPageSelected(int position) {          currentPosition=position;        }        @Override        public void onPageScrollStateChanged(int state) {        }      });  }  private void initdata() {    imageList = new ArrayList<ImageView>();    ImageView imageView = new ImageView(this);    imageView.setImageResource(R.mipmap.ic_launcher);    imageView.setScaleType(ImageView.ScaleType.FIT_XY);    imageList.add(imageView);    imageView = new ImageView(this);    imageView.setImageResource(R.mipmap.ic_launcher);    imageView.setScaleType(ImageView.ScaleType.FIT_XY);    imageList.add(imageView);    imageView = new ImageView(this);    imageView.setImageResource(R.mipmap.ic_launcher);    imageView.setScaleType(ImageView.ScaleType.FIT_XY);    imageList.add(imageView);    imageView = new ImageView(this);    imageView.setImageResource(R.mipmap.ic_launcher);    imageView.setScaleType(ImageView.ScaleType.FIT_XY);    imageList.add(imageView);  }  @Override  public int position() {    return currentPosition;//TODO 通過接口回調把當前位置傳到MyDraweLayout中  }}

2.MyDraweLayout類中的代碼:

public class MyDraweLayout extends DrawerLayout {  public MyDraweLayout(Context context) {    super(context);  }  public MyDraweLayout(Context context, AttributeSet attrs) {    super(context, attrs);  }  public MyDraweLayout(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);  }  //TODO 事件攔截  @Override  public boolean onInterceptTouchEvent(MotionEvent ev) {    //Todo 獲得當前位置,進行判斷    if(callback.position()==0){      return super.onInterceptTouchEvent(ev);    }else {      return false;    }  }  public interface GetPositionCallback{    int position();  } private GetPositionCallback callback;  public void setCallback(GetPositionCallback callback){    this.callback = callback;  }}

3.適配器的代碼;

public class MyAdapter extends PagerAdapter {  private final List<ImageView> imageList;  private final Context contex;  public MyAdapter(Context context, List<ImageView> imageList) {  this.contex=context;    this.imageList = imageList;  }  @Override  public int getCount() {    return imageList.size();  }  @Override  public boolean isViewFromObject(View view, Object object) {    return view==object;  }  @Override  public Object instantiateItem(ViewGroup container, int position) {    ImageView imageView = imageList.get(position);    container.addView(imageView);    return imageView;  }  @Override  public void destroyItem(ViewGroup container, int position, Object object) {    //super.destroyItem(container, position, object);這行代碼記得刪除,不然滑到Viewpager的時候會閃退哦    container.removeView(imageList.get(position));  }}

4.xml布局:

<?xml version="1.0" encoding="utf-8"?><com.example.a43_drawelayoutandviewpager.MyDraweLayout  android:id="@+id/mydrawelayout"  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"><RelativeLayout  android:layout_width="match_parent"  android:layout_height="match_parent">  <android.support.v4.view.ViewPager    android:layout_width="match_parent"    android:layout_height="250dp"    android:id="@+id/viewpager"/>  </RelativeLayout>  <ImageView    android:background="@mipmap/ic_launcher"    android:layout_width="300dp"    android:layout_gravity = "start"    android:layout_height="match_parent"    android:layout_below="@+id/viewpager"   /></com.example.a43_drawelayoutandviewpager.MyDraweLayout>


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河曲县| 酉阳| 鲁甸县| 青田县| 汤阴县| 乌拉特前旗| 福鼎市| 抚州市| 黔西| 阿拉善右旗| 九龙城区| 韶关市| 兰西县| 大兴区| 新和县| 迁西县| 隆林| 定日县| 正镶白旗| 鞍山市| 宿州市| 武清区| 常德市| 双江| 兰溪市| 开阳县| 大兴区| 澳门| 苏尼特右旗| 黎城县| 冀州市| 新郑市| 孟津县| 丰顺县| 襄樊市| 铜陵市| 长武县| 利津县| 阳春市| 乃东县| 通化市|