Android studio 화판 기능 구현

7011 단어 Androidstudio화판
간단 한 개술
일상생활 에서 우 리 는 신기 한 생각 이나 화면,또는 몇 개의 기호 가 자주 발생 한다.이 럴 때 는 사진 찍 기 나 타자 기능 을 사용 할 수 없어 필 기 를 하려 고 해도 주변 에서 펜 을 찾 을 수 없다.그래서 나 는 휴대 전화 끝의 화판 을 만 들 수 있 을 까 생각 했다.
효과 도
在这里插入图片描述
실현 과정
프로젝트 구성 이 매우 간단 하 다.
在这里插入图片描述
코드 를 보 겠 습 니 다.먼저 붓,화판,그리고 좌 표를 설명 합 니 다.

public class MainActivity extends AppCompatActivity{

 Paint paint;
 Canvas canvas;
 ImageView imageview;
 Bitmap bitmap,newbitmap;
 TextView tv_stroke;
 int startX, startY, endX, endY;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my_paint_tools);
  LinearLayout ll_layout = findViewById(R.id.ll_layout);
  RadioGroup rg_color = findViewById(R.id.rg_color);
체크 단 추 를 옮 겨 다 니 며 체크 단추 가 선택 되 었 을 때 체크 단추 색상 을 가 져 오고 현재 단추 의 텍스트 색상 을 설정 합 니 다.마지막 으로 펜 폭 을 설정 하여 뒤에서 지우 개 를 눌 렀 을 때 펜 폭 이 바 뀌 지 않도록 해 야 합 니 다.

for (int i = 0;i<rg_color.getChildCount();i++){
   RadioButton rb = (RadioButton) rg_color.getChildAt(i);
   rb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
     if (buttonView.isChecked()){
      paint.setColor(buttonView.getTextColors().getDefaultColor()); 
      paint.setStrokeWidth(5);
     }
    }
   });
  }
먼저 빈 그림 과 회색 캔버스 를 만들어 캔버스 위 에 그림 을 올 려 놓 습 니 다.
터치 감청 이 벤트 를 등록 하고 마우스 가 눌 렀 을 때의 좌표 와 마우스 가 이동 한 후의 좌 표를 가 져 옵 니 다.시작 과 끝 사이 에 직선 을 그리고 캔버스 그림 을 업데이트 합 니 다.

 imageview.setOnTouchListener(new View.OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction()){
     case MotionEvent.ACTION_DOWN:
      Log.i("MyPaintToolsActivity","ACTION_DOWN");

      
      startX = (int) (event.getX()/1.4);
      startY = (int) (event.getY()/1.4);
      break;
     case MotionEvent.ACTION_MOVE:
      Log.i("MyPaintToolsActivity","ACTION_MOVE");

      
      endX = (int) (event.getX()/1.4);
      endY = (int) (event.getY()/1.4);

      canvas.drawLine(startX,startY,endX,endY,paint);
      startX = (int) (event.getX()/1.4);
      startY = (int) (event.getY()/1.4);
      imageview.setImageBitmap(bitmap);
      break;
     case MotionEvent.ACTION_UP:
      Log.i("MyPaintToolsActivity","ACTION_UP");
      break;
    }
    imageview.invalidate();
    return true;
   }
  });
화면 을 정리 하면 코드 가 한 줄 이 고 나머지 는 캔버스 를 다시 만 드 는 것 입 니 다.

 Button btn_clear = findViewById(R.id.btn_clear);
  btn_clear.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    canvas.drawColor(0,PorterDuff.Mode.CLEAR);
    bitmap = Bitmap.createBitmap(888,1200,Bitmap.Config.ARGB_8888); 
    canvas = new Canvas(bitmap); 
    canvas.drawColor(Color.argb(100,0,0,0)); 
    paint = new Paint();
    paint.setStrokeWidth(5);
    paint.setAntiAlias(true);
    paint.setColor(Color.RED);
    canvas.drawBitmap(bitmap,new Matrix(),paint); 
    imageview.setImageBitmap(bitmap);   

   }
  });
어?여기 캔버스 지 워 지 는데...흰색 으로 지 워 지 는 거 야...
마지막 으로 페이지 레이아웃 을 봅 니 다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:id="@+id/ll_layout">
<!-- tools:context=".MyPaintToolsActivity">-->

 <ImageView

  android:id="@+id/imageview"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_weight="1" />
 <RadioGroup
  android:background="#747373"
  android:layout_width="match_parent"
  android:orientation="horizontal"
  android:id="@+id/rg_color"
  android:layout_height="wrap_content">

  <RadioButton
   android:id="@+id/rb_red"
   android:layout_width="wrap_content"
   android:layout_height="43dp"
   android:layout_weight="1"
   android:text="  "
   android:textColor="#FF0000"
   android:textSize="18sp" />

  <RadioButton
   android:id="@+id/rb_green"
   android:layout_width="wrap_content"
   android:layout_height="30dp"
   android:layout_weight="1"
   android:text="  "
   android:textColor="#000000"
   android:textSize="18sp" />

  <RadioButton
   android:id="@+id/rb_blue"
   android:layout_width="wrap_content"
   android:layout_height="30dp"
   android:layout_weight="1"
   android:text="  "
   android:textColor="#FFFFFF"
   android:textSize="18sp" />

 </RadioGroup>
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:orientation="horizontal">
  <Button
   android:id="@+id/btn_clear"
   android:layout_width="wrap_content"
   android:layout_weight="1"
   android:layout_height="wrap_content"
   android:background="#000000"
   android:textColor="#FFFFFF"
   android:textSize="18sp"
   android:text="  "/>
  <Button
   android:id="@+id/btn_eraser"
   android:layout_width="wrap_content"
   android:layout_weight="1"
   android:layout_height="wrap_content"
   android:textColor="#FFFFFF"
   android:textSize="18sp"
   android:background="#000000"
   android:text="  "/>

 </LinearLayout>

</LinearLayout>
안 드 로 이 드 스튜디오 의 패 널 기능 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 안 드 로 이 드 스튜디오 패 널 기능 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기