zoukankan      html  css  js  c++  java
  • Android ImageView 实现图片触屏左右、上下以及按钮切换图片

    布局代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!--suppress ALL -->
     3 <LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
     4     android:layout_width="fill_parent"
     5     android:layout_height="fill_parent"
     6     android:orientation="vertical"
     7     android:gravity="center"
     8     xmlns:android="http://schemas.android.com/apk/res/android">
     9     <LinearLayout
    10         android:layout_width="wrap_content"
    11         android:layout_height="wrap_content">
    12 
    13 <!--        <ImageView android:id="@+id/image"
    14             android:layout_width="355dip"
    15             android:layout_height="650dip"
    16             android:src="@drawable/p2"/>-->
    17         <ImageSwitcher
    18             android:layout_width="355dp"
    19             android:layout_height="650dp"
    20             android:id="@+id/image"
    21             />
    22     </LinearLayout>
    23     <LinearLayout
    24         android:layout_width="match_parent"
    25         android:layout_height="fill_parent">
    26         <Button android:id="@+id/up"
    27             android:layout_width="150dip"
    28             android:layout_height="wrap_content"
    29             android:text="上一张"/>
    30         <Button android:id="@+id/down"
    31             android:layout_width="150dip"
    32             android:layout_height="wrap_content"
    33             android:text="下一张"/>
    34     </LinearLayout>
    35 </LinearLayout>

    JAVA代码:

      1 package com.android.booktest;
      2 
      3 import androidx.appcompat.app.AppCompatActivity;
      4 
      5 import android.os.Bundle;
      6 import android.util.Log;
      7 import android.view.MotionEvent;
      8 import android.view.View;
      9 import android.view.animation.Animation;
     10 import android.view.animation.AnimationUtils;
     11 import android.widget.Button;
     12 import android.widget.ImageSwitcher;
     13 import android.widget.ImageView;
     14 import android.widget.ViewSwitcher;
     15 
     16 public class MainActivity extends AppCompatActivity {
     17     Button Button1,Button2;
     18     int[] images={
     19             R.drawable.p1, R.drawable.p2,R.drawable.p3
     20     };
     21 //    ImageView image;
     22     ImageSwitcher image;
     23     private float x;
     24     private float y;
     25     private float dx;
     26     private float dy;
     27     int index=0;
     28     @Override
     29     protected void onCreate(Bundle savedInstanceState) {
     30         super.onCreate(savedInstanceState);
     31         setContentView(R.layout.activity_main);
     32         Button1 = (Button)findViewById(R.id.up);
     33         Button2 = (Button)findViewById(R.id.down);
     34         image = (ImageSwitcher) findViewById(R.id.image);
     35         // 必须设置
     36         image.setFactory(new ViewSwitcher.ViewFactory() {
     37             @Override
     38             public View makeView() {
     39                 ImageView imageView=new ImageView(MainActivity.this);
     40                 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
     41                 return imageView;
     42             }
     43         });
     44         image.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
     45         image.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
     46         image.setImageResource(images[0]);
     47         Button1.setOnClickListener(new mclik());
     48         Button2.setOnClickListener(new mclik());
     49         image.setOnTouchListener(new touchme());
     50     }
     51 
     52     class mclik implements View.OnClickListener{
     53 
     54         @Override
     55         public void onClick(View v) {
     56             if(v==Button1){
     57                 backpic();
     58             }
     59             if(v==Button2){
     60                 nextpic();
     61             }
     62         }
     63     }
     64 
     65     private void backpic(){
     66         if(index>0&&index<images.length){
     67             index--;
     68             image.setImageResource(images[index]);
     69         }else {
     70             index=images.length-1;
     71             image.setImageResource(images[index]);
     72         }
     73     }
     74 
     75     private void nextpic(){
     76         if(index>=0&&index<images.length-1){
     77             index++;
     78             image.setImageResource(images[index]);
     79         }else {
     80             index=0;
     81             image.setImageResource(images[index]);
     82         }
     83     }
     84 
     85     //左右滑动
     86 /*
     87     private class touchme implements View.OnTouchListener {
     88 
     89         @Override
     90         public boolean onTouch(View v, MotionEvent event) {
     91             if(event.getAction()==MotionEvent.ACTION_DOWN){
     92                 x = event.getX();
     93                 y = event.getY();
     94             } else if (event.getAction() == MotionEvent.ACTION_UP)  {
     95                 dx = event.getX() - x;
     96                 dy = event.getY() - y;
     97                 if (dx > 0 && Math.abs(dy)<50 && Math.abs(dy)>0) {
     98                     nextpic();
     99                 } else if (dx < 0 && Math.abs(dy)<50 && Math.abs(dy)>0) {
    100                     backpic();
    101                 }
    102             }
    103             return true;
    104         }
    105     }
    106 */
    107 
    108     //上下滑动
    109     private class touchme implements View.OnTouchListener {
    110 
    111         @Override
    112         public boolean onTouch(View v, MotionEvent event) {
    113             if(event.getAction()==MotionEvent.ACTION_DOWN){
    114                 x = event.getX();
    115                 y = event.getY();
    116             } else if (event.getAction() == MotionEvent.ACTION_UP)  {
    117                 dx = event.getX() - x;
    118                 dy = event.getY() - y;
    119                 if (dy > 0 && Math.abs(dx)<50 && Math.abs(dx)>0) {
    120                     nextpic();
    121                 } else if (dy < 0 && Math.abs(dx)<50 && Math.abs(dx)>0) {
    122                     backpic();
    123                 }
    124             }
    125             return true;
    126         }
    127     }
    128 }
  • 相关阅读:
    硬件设计问题——持续更新
    PCB设计资源整理
    PCB层叠设计和电源分割
    PCB设计技巧
    铜厚电流、Layout 3W原则 20H原则 五五原则
    final关键字
    面向对象——继承与组合
    面向对象——继承
    this总结
    static总结
  • 原文地址:https://www.cnblogs.com/xiaowangdatie/p/14049527.html
Copyright © 2011-2022 走看看