diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java index bc85a71..39a6088 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java @@ -5,6 +5,7 @@ import android.app.Activity; import android.content.Intent; import android.os.Bundle; +import android.view.MotionEvent; import android.view.View; import android.widget.Button; @@ -20,48 +21,108 @@ private ActivityPaintBinding binding; private View view; + //ボタン系 + private boolean buttonView = true; + private Button buttonPlayback; + private Button buttonReset; + private Button buttonClose; + private Button buttonDetail; + private Button buttonSkip; + private Button buttonBack; + + //animationCanvasの表示 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation); - animationCanvas = this.findViewById(R.id.animationMyCanvas); + //アニメーションの再生停止 - Button buttonPlayback = findViewById(R.id.button_playback); + buttonPlayback = findViewById(R.id.button_playback); buttonPlayback.setOnClickListener(new View.OnClickListener(){ - @Override public void onClick(View v) { - animationCanvas.onClickPlayback(); + if(animationCanvas.onClickPlayback() == 0){ + buttonPlayback.setText("Play"); + } + else { + buttonPlayback.setText("Stop"); + } } }); //最初に戻す - Button buttonReset = findViewById(R.id.button_reset); + buttonReset = findViewById(R.id.button_reset); buttonReset.setOnClickListener(new View.OnClickListener(){ - @Override public void onClick(View v) { animationCanvas.resetAnimationPage(); } }); + //5秒スキップ + buttonSkip = findViewById(R.id.button_skip); + buttonSkip.setOnClickListener(new View.OnClickListener(){ + public void onClick(View v) { + animationCanvas.setAnimationSkip(1); + } + }); + + //5秒巻き戻し + buttonBack = findViewById(R.id.button_back); + buttonBack.setOnClickListener(new View.OnClickListener(){ + public void onClick(View v) { + animationCanvas.setAnimationSkip(-1); + } + }); + + //閉じる - Button buttonClose = findViewById(R.id.button_close); + buttonClose = findViewById(R.id.button_close); buttonClose.setOnClickListener(new View.OnClickListener(){ - @Override public void onClick(View v) { finish(); } }); - Button buttonDetail = findViewById(R.id.button_detail); + //詳細画面へ移動 + buttonDetail = findViewById(R.id.button_detail); buttonDetail.setOnClickListener(new View.OnClickListener(){ - @Override public void onClick(View v) { Intent intent = new Intent(AnimationActivity.this, AnimationDetailActivity.class); startActivity(intent); } }); - } + + + //Activity内のボタンの表示/非表示 + @Override + public boolean onTouchEvent(MotionEvent motionEvent) { + switch (motionEvent.getAction()){ + case MotionEvent.ACTION_DOWN: + //画面タップで表示されてたら非表示にする。 + if(buttonView) { + buttonReset.setVisibility(View.INVISIBLE); + buttonPlayback.setVisibility(View.INVISIBLE); + buttonDetail.setVisibility(View.INVISIBLE); + buttonClose.setVisibility(View.INVISIBLE); + buttonSkip.setVisibility(View.INVISIBLE); + buttonBack.setVisibility(View.INVISIBLE); + + buttonView = false; + } + else { + buttonReset.setVisibility(View.VISIBLE); + buttonPlayback.setVisibility(View.VISIBLE); + buttonDetail.setVisibility(View.VISIBLE); + buttonClose.setVisibility(View.VISIBLE); + buttonSkip.setVisibility(View.VISIBLE); + buttonBack.setVisibility(View.VISIBLE); + + buttonView = true; + } + } + return false; + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java index 73aa4c4..d3ba066 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java @@ -37,26 +37,29 @@ super.onDraw(canvas); //ダミーです。 - //100msごとに1pxずつ3つ目の四角が下に降りる + //100msごとに1pxずつ2つ目の四角が下に降りる canvas.drawRect(100, 100, 200, 300, paint); - canvas.drawRect(300, 200, 400, 400, paint); - canvas.drawRect(500, 100 + pageNo, 600, 300 + pageNo, paint); + canvas.drawRect(500, 100 + this.pageNo, 600, 300 + this.pageNo, paint); } //アニメーションの再生停止 - public void onClickPlayback(){ + public int onClickPlayback(){ + int num = 0; if(timer != null){ //timerの終了 timer.cancel(); timer = null; + num = 0; } else{ //timerの生成 this.timer = new Timer(); this.timerTask = new CountUpTimerTask(); - this.timer.schedule(timerTask,0, msec);//スケジュールを100ms毎に設定する。 + this.timer.schedule(timerTask,0, this.msec);//スケジュールを100ms毎に設定する。 + num = 1; } + return num; } //ページを進める @@ -72,12 +75,23 @@ } } - //アニメーションを最初のページに戻す。 + //最初のページに戻す。 public void resetAnimationPage(){ - pageNo = 0; + this.pageNo = 0; postInvalidate(); } + //再生速度の変更 + public void setAnimationSpeed(float speed){ + this.msec *= speed; + } + + //5秒スキップ + public void setAnimationSkip(int x){ + this.pageNo += x * 5000 / this.msec; + if(this.pageNo < 0) this.pageNo = 0; + postInvalidate(); + } } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java index 2d0e7b1..0cfd53c 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java @@ -31,6 +31,13 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; +import java.util.Map;import java.util.Map.Entry; +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + public class EditFragment extends Fragment { @@ -39,7 +46,12 @@ private ArrayList aidList; private ArrayList AnimationJsonList; private ArrayList nameList; + private ArrayList lastUpDateList; + private HashMap nameHashMap; + private HashMap lastUpDateHashMap; + private Integer AnimationAid; private String AnimationName; + private String AnimationLastUpDate; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -66,7 +78,11 @@ editViewModel.getWorkList(uid, token); aidList = new ArrayList<>(); nameList = new ArrayList<>(); + lastUpDateList = new ArrayList<>(); AnimationJsonList = new ArrayList<>(); + Map nameHashMap = new HashMap(); + Map lastUpDateHashMap = new HashMap(); + ListView listView = (ListView) getActivity().findViewById(R.id.list_view); editViewModel.getWorkJson().observe(getViewLifecycleOwner(), new Observer() { @@ -83,14 +99,36 @@ //acanthusのAnimationJsonListにとってきたaidが該当するかを探索する if(aidList.contains(AnimationJsonList.get(i).getAid())){ AnimationName = AnimationJsonList.get(i).getAnimationName(); - nameList.add(AnimationName); + AnimationLastUpDate = AnimationJsonList.get(i).getLastUpdate(); + AnimationAid = AnimationJsonList.get(i).getAid(); + nameHashMap.put(AnimationAid, AnimationName); + lastUpDateHashMap.put(AnimationAid, AnimationLastUpDate); + +// nameList.add(AnimationName); +// lastUpDateList.add(AnimationLastUpDate); workList.add(AnimationJsonList.get(i)); } } } + //-------------------------------------------------------------------------------------------------------------------- + //sort + List> list_entries = new ArrayList>(lastUpDateHashMap.entrySet()); + Collections.sort(list_entries, new Comparator>() { + public int compare(Entry obj1, Entry obj2) { + // 降順(昇順はObj1とObj2を変える) + return obj2.getValue().compareTo(obj1.getValue()); + } + }); + for(Entry entry : list_entries) { + lastUpDateList.add(entry.getValue()); + nameList.add(nameHashMap.get(entry.getKey())); + } + //-------------------------------------------------------------------------------------------------------------------- + + BaseAdapter adapter = new WorkListViewAdapter(getActivity(), - R.layout.work_list, nameList, nameList); + R.layout.work_list, nameList, lastUpDateList); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { diff --git a/app/src/main/res/layout/activity_animation.xml b/app/src/main/res/layout/activity_animation.xml index 69e0a2e..94a2c0b 100644 --- a/app/src/main/res/layout/activity_animation.xml +++ b/app/src/main/res/layout/activity_animation.xml @@ -12,19 +12,22 @@ android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0" />