2

我想制作像以下网站一样的android应用程序。

https://section-anatomy.org/ct-abdomen/或类似https://radiopaedia.org/cases/squamous-cell-carcinoma-oral-cavity

有多张图片,这些图片正在通过滚动进行更改。

我用 action_down 和 action_up 做了类似的事情,imageswitcheronTouch它不起作用,因为当我移开手指时,它会转到第一张图像,它不会停留在我离开的地方。

这是我的代码:

package com.radiology.radiologymenu.tomografi;

import android.content.SharedPreferences;
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.Display;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.HorizontalScrollView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewSwitcher;

import com.radiology.radiologymenu.R;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

public class ImageChangeActivity extends AppCompatActivity {
    private ImageSwitcher imageSwitcher;
    private ImageView box;
    // Size
    private int frameHeight;
    private int boxSize;
    private int screenHeight;

    // Position
    private int boxY;

    // Speed
    private int boxSpeed;

    // Score
    private int score = 0;

    // Initialize Class
    private Handler handler = new Handler();
    private Timer timer = new Timer();



    // Status Check
    private boolean action_flg = false;
    private boolean start_flg = false;
    private String pic;
    private ArrayList<Integer> slidePictures;

    private static final Integer[] image= {
            R.drawable.sagittal_boyun_1,             R.drawable.sagittal_boyun_2,             R.drawable.sagittal_boyun_3,             R.drawable.sagittal_boyun_4,
            R.drawable.sagittal_boyun_5,             R.drawable.sagittal_boyun_6,             R.drawable.sagittal_boyun_7,             R.drawable.sagittal_boyun_8,
            R.drawable.sagittal_boyun_9,             R.drawable.sagittal_boyun_10,            R.drawable.sagittal_boyun_11,
            R.drawable.sagittal_boyun_12,            R.drawable.sagittal_boyun_13,            R.drawable.sagittal_boyun_14,            R.drawable.sagittal_boyun_15,
            R.drawable.sagittal_boyun_16,            R.drawable.sagittal_boyun_17,            R.drawable.sagittal_boyun_18,            R.drawable.sagittal_boyun_19,
            R.drawable.sagittal_boyun_20,            R.drawable.sagittal_boyun_21,            R.drawable.sagittal_boyun_22,            R.drawable.sagittal_boyun_23,
            R.drawable.sagittal_boyun_24,            R.drawable.sagittal_boyun_25,            R.drawable.sagittal_boyun_26,            R.drawable.sagittal_boyun_27,
            R.drawable.sagittal_boyun_28,            R.drawable.sagittal_boyun_29,            R.drawable.sagittal_boyun_30,            R.drawable.sagittal_boyun_31,
            R.drawable.sagittal_boyun_32,            R.drawable.sagittal_boyun_33,            R.drawable.sagittal_boyun_34,            R.drawable.sagittal_boyun_35,
            R.drawable.sagittal_boyun_36,            R.drawable.sagittal_boyun_37,            R.drawable.sagittal_boyun_38,            R.drawable.sagittal_boyun_39,
            R.drawable.sagittal_boyun_40,            R.drawable.sagittal_boyun_41,            R.drawable.sagittal_boyun_42,            R.drawable.sagittal_boyun_43,
            R.drawable.sagittal_boyun_44,            R.drawable.sagittal_boyun_45    };
    int i = 0;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.slide_activity_main);
        pic = getIntent().getExtras().getString("pic");
        slidePictures = (ArrayList<Integer>) getIntent().getExtras().getSerializable("slidePictures");

        getView2(pic,slidePictures);
    }
    public void getView2(String strings, ArrayList<Integer> slidePictures){
        setContentView(R.layout.slide_activity_main);
        TextView textView  = (TextView) findViewById(R.id.resimText);
        textView.setText(strings.toString());
        imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
        box = (ImageView) findViewById(R.id.box);


        // Get screen size.
        WindowManager wm = getWindowManager();
        Display disp = wm.getDefaultDisplay();
        Point size = new Point();
        disp.getSize(size);

        screenHeight = size.y;

        boxSpeed = Math.round(screenHeight / 60);  // 1280 / 60 = 21.333... => 21

        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView imageView = new ImageView(getApplicationContext());
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                FrameLayout.LayoutParams params = new ImageSwitcher.LayoutParams(
                        FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);

                imageView.setLayoutParams(params);

                return imageView;
            }
        });
        imageSwitcher.setImageResource(slidePictures.get(0));
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK))
        {
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }
    public void changePos() {


        // Move Box
        if (action_flg == true) {
            // Touching
            boxY -= boxSpeed;
            if (i<slidePictures.size()-1){
                i++;
                imageSwitcher.setImageResource(slidePictures.get(i));
            }

        } else {
            // Releasing
            boxY += boxSpeed;
            if (i>0){
                i--;
                imageSwitcher.setImageResource(slidePictures.get(i));
            }
        }

        // Check box position.
        if (boxY < 0) boxY = 0;

        if (boxY > frameHeight - boxSize) boxY = frameHeight - boxSize;

        box.setY(boxY);

    }
    public boolean onTouchEvent(MotionEvent me) {

        if (start_flg == false) {

            start_flg = true;

            // Why get frame height and box height here?
            // Because the UI has not been set on the screen in OnCreate()!!

            FrameLayout frame = (FrameLayout) findViewById(R.id.frame);
            frameHeight = frame.getHeight();

            boxY = (int)box.getY();

            // The box is a square.(height and width are the same.)
            boxSize = box.getHeight();


            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            changePos();
                        }
                    });
                }
            }, 0, 40);


        } else {
            if (me.getAction() == MotionEvent.ACTION_DOWN) {
                action_flg = false;

            } else if (me.getAction() == MotionEvent.ACTION_UP) {
                action_flg = true;
            }

        }
        return true;
    }
} 
4

0 回答 0