package com.example.navigate.viewpager1; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; /** * Created by Pavel on 21.02.2016. */ public class PageFragment extends Fragment { static final String ARGUMENT_PAGE_NUMBER = "arg_page_number"; ImageView[] arr_imageA = new ImageView[7]; ImageView[] arr_imageB = new ImageView[7]; ImageView[] arr_imageC = new ImageView[7]; int pageNumber; static PageFragment newInstance(int page) { PageFragment pageFragment = new PageFragment(); Bundle arguments = new Bundle(); arguments.putInt(ARGUMENT_PAGE_NUMBER, page); pageFragment.setArguments(arguments); return pageFragment; } @Override public void onCreate(Bundle savedInstanceState) { //overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); super.onCreate(savedInstanceState); pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER); ///////// ////////////////// } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment, container, false); arr_imageA[0] = (ImageView) rootView.findViewById(R.id.imageView1); arr_imageA[1] = (ImageView) rootView.findViewById(R.id.imageView2); arr_imageA[2] = (ImageView) rootView.findViewById(R.id.imageView3); arr_imageA[3] = (ImageView) rootView.findViewById(R.id.imageView4); arr_imageA[4] = (ImageView) rootView.findViewById(R.id.imageView5); arr_imageA[5] = (ImageView) rootView.findViewById(R.id.imageView6); arr_imageA[6] = (ImageView) rootView.findViewById(R.id.imageView7); for (int i = 0; i < arr_imageA.length; i++) { arr_imageA[i].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Intent myIntent = null; switch (v.getId()) { case R.id.imageView1: arr_imageA[0].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[0].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a1.class)); } }, 100); } }); break; case R.id.imageView2: arr_imageA[1].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[1].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a2.class)); } }, 100); } }); break; case R.id.imageView3: arr_imageA[2].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[2].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a3.class)); } }, 100); } }); break; case R.id.imageView4: arr_imageA[3].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[3].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a4.class)); } }, 100); } }); break; case R.id.imageView5: arr_imageA[4].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[4].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a5.class)); } }, 100); } }); break; case R.id.imageView6: arr_imageA[5].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[5].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a6.class)); } }, 100); } }); break; case R.id.imageView7: arr_imageA[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[6].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a7.class)); } }, 100); } }); } return false; } }); if (pageNumber == 1) { View rootViewB = inflater.inflate(R.layout.fragment2, container, false); arr_imageB[0] = (ImageView) rootViewB.findViewById(R.id.b1); arr_imageB[1] = (ImageView) rootViewB.findViewById(R.id.b2); arr_imageB[2] = (ImageView) rootViewB.findViewById(R.id.b3); arr_imageB[3] = (ImageView) rootViewB.findViewById(R.id.b4); arr_imageB[4] = (ImageView) rootViewB.findViewById(R.id.b5); arr_imageB[5] = (ImageView) rootViewB.findViewById(R.id.b6); arr_imageB[6] = (ImageView) rootViewB.findViewById(R.id.b7); for (int j = 0; j < arr_imageB.length; j++) { arr_imageB[j].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Intent myIntent = null; switch (v.getId()) { case R.id.b1: arr_imageB[0].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[0].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b1.class)); } }, 100); } }); break; case R.id.b2: arr_imageB[1].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[1].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b2.class)); } }, 100); } }); break; case R.id.b3: arr_imageB[2].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[2].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b3.class)); } }, 100); } }); break; case R.id.b4: arr_imageB[3].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[3].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b4.class)); } }, 100); } }); break; case R.id.b5: arr_imageB[4].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[4].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b5.class)); } }, 100); } }); break; case R.id.b6: arr_imageB[5].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[5].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b6.class)); } }, 100); } }); break; case R.id.b7: arr_imageB[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageB[6].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),b7.class)); } }, 100); } }); } return false; } }); } return rootViewB; } ///////////////////////// if (pageNumber == 2) { View rootViewC = inflater.inflate(R.layout.fragment3, container, false); arr_imageC[0] = (ImageView) rootViewC.findViewById(R.id.c1); arr_imageC[1] = (ImageView) rootViewC.findViewById(R.id.c2); arr_imageC[2] = (ImageView) rootViewC.findViewById(R.id.c3); arr_imageC[3] = (ImageView) rootViewC.findViewById(R.id.c4); arr_imageC[4] = (ImageView) rootViewC.findViewById(R.id.c5); arr_imageC[5] = (ImageView) rootViewC.findViewById(R.id.c6); arr_imageC[6] = (ImageView) rootViewC.findViewById(R.id.c7); for (int j = 0; j < arr_imageC.length; j++) { arr_imageC[j].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Intent myIntent = null; switch (v.getId()) { case R.id.c1: arr_imageC[0].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[0].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c1.class)); } }, 100); } }); break; case R.id.c2: arr_imageC[1].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[1].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c2.class)); } }, 100); } }); break; case R.id.c3: arr_imageC[2].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[2].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c3.class)); } }, 100); } }); break; case R.id.c4: arr_imageC[3].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[3].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c4.class)); } }, 100); } }); break; case R.id.c5: arr_imageC[4].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[4].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c5.class)); } }, 100); } }); break; case R.id.c6: arr_imageC[5].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[5].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c6.class)); } }, 100); } }); break; case R.id.c7: arr_imageC[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageC[6].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),c7.class)); } }, 100); } }); } return false; } }); } return rootViewC; } } return rootView; } } 
  • It would be nice if you added explanations to the question why this code is needed, what and how it does. - zRrr
  • The essence is this: 3 screens layout en by 7 imageview with a unique id, in this code I catch the touches on each and play the animation, I would like to know if the code can be shortened or left as is - upward

1 answer 1

Try in method

  arr_imageA[i].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { ... 

shorten the code between switch and cases by writing one method in which you will call the contents of each case, and call the method itself in these cases with passing parameters. You only seem to have the value of the array element and the value of the intensity changes everywhere. Pass these 2 parameters to this one method.

For example,

 case R.id.imageView7: arr_imageA[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[6].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),a7.class)); } }, 100); } }); 

change to

 case R.id.imageView7: arr_imageA[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { metod1(6, a7.class) }); 

and method1 will be something like this

 public void metod1(int i,Class prinyatiy_class){ Animation anim = AnimationUtils.loadAnimation(v.getContext(),R.anim.clickbutton); arr_imageA[i].startAnimation(anim); new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(getActivity(),prinyatiy_class)); } }, 100); } });} 

I wrote it in a hurry, but it should work and your code will shorten