diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/Pen.java b/app/src/main/java/org/ntlab/acanthus_client/entities/Pen.java new file mode 100644 index 0000000..17e335e --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/Pen.java @@ -0,0 +1,36 @@ +package org.ntlab.acanthus_client.entities; + +//----------------------------------------------------------------- +// +public class Pen { + private Integer penType; + private Integer color; + private Integer thickness; + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // + public Pen(Integer penType, Integer color, Integer thickness) { + this.penType = penType; + this.color = color; + this.thickness = thickness; + } + //----------------------------------------------------------------- + // getter + public Integer getPenType() { + return this.penType; + } + + public Integer getColor() { + return this.getColor(); + } + + public Integer getThickness() { + return this.thickness; + } + //----------------------------------------------------------------- + // setter + + //----------------------------------------------------------------- + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditViewModel.java index 1ef9fef..6720486 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditViewModel.java @@ -3,6 +3,9 @@ import org.ntlab.acanthus_client.entities.AidJson; import org.ntlab.acanthus_client.entities.WorkJson; import org.ntlab.acanthus_client.resources.accounts.WorkRest; +import org.ntlab.acanthus_client.resources.gallery.InvitesRest; + +import java.util.concurrent.Callable; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -47,8 +50,8 @@ call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if (response.isSuccessful()){ - if (response.body()!=null){ + if (response.isSuccessful()) { + if (response.body() != null) { aid[0] = response.body().getAid(); aidJsonMutableLiveData.setValue(response.body()); } @@ -65,7 +68,7 @@ } //ユーザーの作成した作品の表示APIの呼び出し - public void getWorkList(Integer uid, String token){ + public void getWorkList(Integer uid, String token) { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") .addConverterFactory(JacksonConverterFactory.create()) @@ -77,8 +80,8 @@ call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if (response.isSuccessful()){ - if (response.body()!=null){ + if (response.isSuccessful()) { + if (response.body() != null) { workJsonMutableLiveData.setValue(response.body()); } } @@ -91,4 +94,28 @@ }); } + //ユーザーの作品へ他ユーザーを招待するAPIの呼び出し + public void invitesEditor(Integer aid, String ownerUid, String invitedUid, String ownerToken) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final InvitesRest invitesRest = retrofit.create(InvitesRest.class); + + //作品への招待 + Call call = invitesRest.addInvite(aid, ownerUid, invitedUid, ownerToken); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful() && response.body() != null) { + } + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java new file mode 100644 index 0000000..5dd6392 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java @@ -0,0 +1,73 @@ +package org.ntlab.acanthus_client.views.main_menu_ui.edit; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; +import android.content.Context; + +import org.ntlab.acanthus_client.R; + +public class WorkListViewAdapter extends BaseAdapter { + + private final LayoutInflater inflater; + private final int layoutId; + private final String[] animationName; + private final String[] lastUpdate; + + //参照保存データ + static class ViewHolder{ + TextView textViewName; + TextView textViewDate; + } + + //コンテキスト + public WorkListViewAdapter(Context context, int layoutId, String[] animationName, String[] lastUpdate) { + super(); + this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + this.layoutId = layoutId; + this.animationName = animationName; + this.lastUpdate = lastUpdate; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + //Viewのinflate(拡張) + if (convertView == null){ + //fragment_edit.xmlにlistView用のレイアウトを入れ込む + convertView = inflater.inflate(layoutId, parent, false); + //ViewHolderの生成とレイアウト内テキストのセット + viewHolder = new ViewHolder(); + viewHolder.textViewName = convertView.findViewById(R.id.textViewName); + viewHolder.textViewDate = convertView.findViewById(R.id.textViewDate); + convertView.setTag(viewHolder); + }else { + //既に初期セットの処理がされている場合、再利用する + viewHolder = (ViewHolder) convertView.getTag(); + } + + //ViewHolder内のtextViewName,Dateに各ポジションのデータをセット + viewHolder.textViewName.setText(animationName[position]); + viewHolder.textViewDate.setText(lastUpdate[position]); + + return convertView; + } + + @Override + public int getCount() { + return 0; + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java index d10fa07..f4133e2 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java @@ -36,10 +36,10 @@ binding = FragmentHomeBinding.inflate(inflater, container, false); View root = binding.getRoot(); - ListView listView = binding.option; + TextView listView = binding.textHome; Collection animationJsons = null; - BaseAdapter adapter = new ListAnimationViewAdapter(this.getActivity().getApplicationContext(), R.layout.animation_home, animationJsons); - listView.setAdapter(adapter); + // BaseAdapter adapter = new ListAnimationViewAdapter(this.getActivity().getApplicationContext(), R.layout.animation_home, animationJsons); + //listView.setAdapter(adapter); final TextView textView = binding.textHome; homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java new file mode 100644 index 0000000..1aee07f --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java @@ -0,0 +1,62 @@ +package org.ntlab.acanthus_client.views.main_menu_ui.mypage; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.resources.accounts.InvitedRest; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.converter.scalars.ScalarsConverterFactory; + +//----------------------------------------------------------------- +// +public class InvitedConnectionModel { + + private Retrofit retrofit; + private Acanthus acanthus; + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // + public InvitedConnectionModel(Acanthus acanthus) { + init(acanthus); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // + public void init(Acanthus acanthus) { + this.acanthus = acanthus; + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + } + + //----------------------------------------------------------------- + // + public void checkInvited() { + final InvitedRest invitedRest = retrofit.create(InvitedRest.class); + + Call call = invitedRest.checkAccountInvited( + acanthus.getPreferenceUid(), acanthus.getAid()); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + + } + //----------------------------------------------------------------- + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java index 20d33e9..0820991 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java @@ -1,5 +1,7 @@ package org.ntlab.acanthus_client.views.main_menu_ui.mypage; +import android.app.Activity; +import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -7,6 +9,7 @@ import android.widget.TextView; +import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.databinding.FragmentMypageBinding; import androidx.annotation.NonNull; @@ -15,19 +18,45 @@ import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +//----------------------------------------------------------------- +// public class MyPageFragment extends Fragment { private MyPageViewModel mypageViewModel; private FragmentMypageBinding binding; - public View onCreateView(@NonNull LayoutInflater inflater, - ViewGroup container, Bundle savedInstanceState) { - mypageViewModel = - new ViewModelProvider(this).get(MyPageViewModel.class); - + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentMypageBinding.inflate(inflater, container, false); View root = binding.getRoot(); + init(); + + return root; + } + + //----------------------------------------------------------------- + // + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + private void init() { + Acanthus acanthus = (Acanthus) getActivity().getApplication(); + mypageViewModel = new ViewModelProvider(this).get(MyPageViewModel.class); + mypageViewModel.init(acanthus); + } + + //----------------------------------------------------------------- + // + private void startObserve() { final TextView textView = binding.textMypage; mypageViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { @Override @@ -35,12 +64,7 @@ textView.setText(s); } }); - return root; } + //----------------------------------------------------------------- - @Override - public void onDestroyView() { - super.onDestroyView(); - binding = null; - } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java new file mode 100644 index 0000000..b8a6e8f --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java @@ -0,0 +1,15 @@ +package org.ntlab.acanthus_client.views.main_menu_ui.mypage; + +import org.ntlab.acanthus_client.Acanthus; + +public class MyPageModelContainer { + private InvitedConnectionModel invitedConnectionModel; + + //----------------------------------------------------------------- + // + public void init(Acanthus acanthus){ + invitedConnectionModel = new InvitedConnectionModel(acanthus); + } + //----------------------------------------------------------------- + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java index e43bc5e..3541b40 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java @@ -4,16 +4,43 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.resources.accounts.InvitedRest; + +import retrofit2.Call; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.converter.scalars.ScalarsConverterFactory; + + +//----------------------------------------------------------------- +// public class MyPageViewModel extends ViewModel { + private MyPageModelContainer myPageModelContainer; private MutableLiveData mText; + //----------------------------------------------------------------- + //----------------------------------------------------------------- public MyPageViewModel() { + myPageModelContainer = new MyPageModelContainer(); mText = new MutableLiveData<>(); mText.setValue("This is mypage fragment"); } + //----------------------------------------------------------------- + // getter public LiveData getText() { return mText; } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + public void init(Acanthus acanthus) { + myPageModelContainer.init(acanthus); + } + //----------------------------------------------------------------- + //----------------------------------------------------------------- + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteConnectionModel.java deleted file mode 100644 index 030ed32..0000000 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteConnectionModel.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.ntlab.acanthus_client.views.paint; - -//----------------------------------------------------------------- -// 招待関係通信 -public class InviteConnectionModel { - -} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InvitesConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InvitesConnectionModel.java new file mode 100644 index 0000000..588d2b5 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InvitesConnectionModel.java @@ -0,0 +1,61 @@ +package org.ntlab.acanthus_client.views.paint; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.resources.gallery.InvitesRest; +import org.ntlab.acanthus_client.resources.gallery.StrokesRest; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.converter.scalars.ScalarsConverterFactory; + +//----------------------------------------------------------------- +// 招待関係通信 +public class InvitesConnectionModel { + private Retrofit retrofit; + private Acanthus acanthus; + + //----------------------------------------------------------------- + // + public InvitesConnectionModel(Acanthus acanthus) { + init(acanthus); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + public void init(Acanthus acanthus) { + this.acanthus = acanthus; + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + } + + //----------------------------------------------------------------- + // 新しい編集者の追加(POST) + public void inviteNewEditor(Integer invitedUid) { + final InvitesRest invitesRest = retrofit.create(InvitesRest.class); + + //----------------------------------------------------------------- + // 招待リクエストを送るAPI + Call call = invitesRest.addInvite( + acanthus.getAid(), acanthus.getPreferenceUid().toString(), invitedUid.toString(), acanthus.getPreferenceToken()); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + //----------------------------------------------------------------- + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java index bcd5c55..d173367 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java @@ -8,14 +8,19 @@ import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.R; +import org.ntlab.acanthus_client.databinding.ActivityPaintBinding; //----------------------------------------------------------------- // 描画ページ public class PaintActivity extends AppCompatActivity { private PaintCanvas paintCanvas; + private ActivityPaintBinding binding; + private PaintViewModel paintViewModel; + //----------------------------------------------------------------- + //----------------------------------------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -24,13 +29,20 @@ //----------------------------------------------------------------- // 描画全体のクリア - public void onClear(View view) { + public void onClickClear(View view) { paintCanvas.clearCanvas(); } //----------------------------------------------------------------- - //----------------------------------------------------------------- // + public void onClickInvite(View view) { + Integer dummy1Id = 2; + paintViewModel.inviteNewUserRequest(dummy1Id); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init private void init() { setContentView(R.layout.activity_paint); Acanthus acanthus = (Acanthus) getApplication(); @@ -43,6 +55,7 @@ //----------------------------------------------------------------- // private void initView() { + binding = ActivityPaintBinding.inflate(getLayoutInflater()); paintCanvas = (PaintCanvas) findViewById(R.id.myCanvas); paintCanvas.setPaintViewModel(paintViewModel); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java index 5a89afe..54a3d4a 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java @@ -42,6 +42,7 @@ path = new Path(); // 図形描画 paint = new Paint();//筆の種類 + paint.setColor(Color.RED);//色の指定 paint.setStyle(Paint.Style.STROKE);//線をひく paint.setStrokeWidth(20);//幅 diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java index be7f575..883feee 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java @@ -25,12 +25,8 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- // - public PaintConnectionModel() { - retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") - .addConverterFactory(ScalarsConverterFactory.create()) - .addConverterFactory(JacksonConverterFactory.create()) - .build(); + public PaintConnectionModel(Acanthus acanthus) { + init(acanthus); } //----------------------------------------------------------------- @@ -48,6 +44,11 @@ // init public void init(Acanthus acanthus) { this.acanthus = acanthus; + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(JacksonConverterFactory.create()) + .build(); } //----------------------------------------------------------------- diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java index 6dcc98b..a61430d 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java @@ -1,20 +1,29 @@ package org.ntlab.acanthus_client.views.paint; +import org.ntlab.acanthus_client.Acanthus; + //----------------------------------------------------------------- // 各種モデルの保持者 public class PaintModelContainer { private PaintConnectionModel paintConnectionModel; + private InvitesConnectionModel invitesConnectionModel; //----------------------------------------------------------------- //----------------------------------------------------------------- //  - public PaintModelContainer(){ - this.paintConnectionModel = new PaintConnectionModel(); + public PaintModelContainer(Acanthus acanthus) { + this.paintConnectionModel = new PaintConnectionModel(acanthus); + this.invitesConnectionModel = new InvitesConnectionModel(acanthus); } + //----------------------------------------------------------------- // getter public PaintConnectionModel getPaintConnectionModel() { return this.paintConnectionModel; } + + public InvitesConnectionModel getInvitesConnectionModel() { + return this.invitesConnectionModel; + } //----------------------------------------------------------------- } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java index a2da854..1f403a2 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java @@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModel; +import org.jetbrains.annotations.NotNull; import org.ntlab.acanthus_client.Acanthus; @@ -15,20 +16,16 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- - public PaintViewModel() { - paintModelContainer = new PaintModelContainer(); - } - - //----------------------------------------------------------------- - //----------------------------------------------------------------- - // + // init public void init(Acanthus acanthus) { + paintModelContainer = new PaintModelContainer(acanthus); paintModelContainer.getPaintConnectionModel().init(acanthus); + paintModelContainer.getInvitesConnectionModel().init(acanthus); } //----------------------------------------------------------------- // 描画APIの通信リクエスト - public void drawStrokeRequest(MotionEvent motionEvent) { + public void drawStrokeRequest(@NotNull MotionEvent motionEvent) { float x = motionEvent.getX(); float y = motionEvent.getY(); @@ -44,6 +41,12 @@ } //----------------------------------------------------------------- + // 招待APIの通信リクエスト + public void inviteNewUserRequest(Integer invitedUid) { + paintModelContainer.getInvitesConnectionModel().inviteNewEditor(invitedUid); + } + + //----------------------------------------------------------------- // 一定間隔でサーバー上の筆跡を取得する(GET) public void startObservationOfChangedStroke() { } diff --git a/app/src/main/res/layout/activity_paint.xml b/app/src/main/res/layout/activity_paint.xml index 1e36f75..8b6f4d7 100644 --- a/app/src/main/res/layout/activity_paint.xml +++ b/app/src/main/res/layout/activity_paint.xml @@ -15,12 +15,26 @@ android:layout_weight="1" />