国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

java - 有大神能幫忙補充下代碼嗎(Android的Canvas和Paint的使用,和文件保存,手勢識別)?

瀏覽:127日期:2024-02-22 17:03:43

問題描述

研究了好久 都寫不好 。。。

package com.li.zhuoyuan.designmodel;import android.content.Context;import android.os.Build;import android.util.Log;import android.view.MotionEvent;import android.view.ScaleGestureDetector;public abstract class GestureDetector { private static final String TAG = 'VersionedGestureDetector'; OnGestureListener mListener; public static GestureDetector newInstance(Context context, OnGestureListener listener) {final int sdkVersion = Integer.parseInt(Build.VERSION.SDK);GestureDetector detector = null;if (sdkVersion < Build.VERSION_CODES.ECLAIR) { detector = new CupcakeDetector();} else if (sdkVersion < Build.VERSION_CODES.FROYO) { detector = new EclairDetector();} else { detector = new FroyoDetector(context);}Log.d(TAG, 'Created new ' + detector.getClass());detector.mListener = listener;return detector; } public abstract boolean onTouchEvent(MotionEvent ev); public interface OnGestureListener {public void onDrag(float dx, float dy);public void onScale(float scaleFactor); } private static class CupcakeDetector extends GestureDetector {float mLastTouchX;float mLastTouchY;float getActiveX(MotionEvent ev) { return ev.getX();}float getActiveY(MotionEvent ev) { return ev.getY();}boolean shouldDrag() { return true;}@Overridepublic boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) {case MotionEvent.ACTION_DOWN: { mLastTouchX = getActiveX(ev); mLastTouchY = getActiveY(ev); break;}case MotionEvent.ACTION_MOVE: { final float x = getActiveX(ev); final float y = getActiveY(ev); if (shouldDrag()) {mListener.onDrag(x - mLastTouchX, y - mLastTouchY); } mLastTouchX = x; mLastTouchY = y; break;} } return true;} } private static class EclairDetector extends CupcakeDetector {private static final int INVALID_POINTER_ID = -1;private int mActivePointerId = INVALID_POINTER_ID;private int mActivePointerIndex = 0;@Overridefloat getActiveX(MotionEvent ev) { return ev.getX(mActivePointerIndex);}@Overridefloat getActiveY(MotionEvent ev) { return ev.getY(mActivePointerIndex);}@Overridepublic boolean onTouchEvent(MotionEvent ev) { final int action = ev.getAction(); //No.1 //開始寫代碼,請結(jié)合所有代碼在這里實現(xiàn),計算手指在屏幕上移動的位置。從而方便其他調(diào)用這個類的地方更新屏幕上小機器人的位置。小機器人跟隨手指移動。 switch (action & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN: mLastTouchX = ev.getX(); mLastTouchY = ev.getY(); break;case MotionEvent.ACTION_MOVE: mLastTouchX = ev.getX(); mLastTouchY = ev.getY(); } mActivePointerIndex = 0; //end_code return super.onTouchEvent(ev);} } private static class FroyoDetector extends EclairDetector {private ScaleGestureDetector mDetector;public FroyoDetector(Context context) { mDetector = new ScaleGestureDetector(context, new ScaleGestureDetector.SimpleOnScaleGestureListener() {@Overridepublic boolean onScale(ScaleGestureDetector detector) { mListener.onScale(detector.getScaleFactor()); return true;} });}@Overrideboolean shouldDrag() { return !mDetector.isInProgress();}@Overridepublic boolean onTouchEvent(MotionEvent ev) { mDetector.onTouchEvent(ev); return super.onTouchEvent(ev);} }}

package com.li.zhuoyuan.designmodel;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;import java.io.File;public class MainActivity extends AppCompatActivity { private Button button_save, button_resume; private ImageView iv_canvas; private Bitmap baseBitmap; private Canvas canvas; /*聲明畫筆*/ private Paint mPaint; /*手勢監(jiān)聽器*/ private View.OnTouchListener onTouchListener = new View.OnTouchListener() {/*表示手指在屏幕上X軸Y軸的坐標(biāo)點*/float startX;float startY;@Overridepublic boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) {case MotionEvent.ACTION_DOWN: //No.1 //開始寫代碼,請用代碼實現(xiàn)初始化Bitmap對象、定義畫布顏色(請定義為白色)、記錄用戶手指在屏幕上的觸摸點坐標(biāo) 將坐標(biāo)存入到startX和startY變量中。 Bitmap bitmap = Bitmap.createBitmap(iv_canvas.getWidth(), iv_canvas.getHeight(), Bitmap.Config.ARGB_8888); mPaint.setColor(Color.WHITE); startX = iv_canvas.getX(); startX = iv_canvas.getY(); //end_code break;case MotionEvent.ACTION_MOVE: //No.2 //開始寫代碼,根據(jù)手指在屏幕滑動的軌跡實現(xiàn)繪制軌跡的線條,并更新手指在屏幕上的坐標(biāo)點(startX和startY變量),將繪制好的圖像展示在ImageView中。 float stopX = iv_canvas.getX(); float stopY = iv_canvas.getY(); //end_code break;case MotionEvent.ACTION_UP: break;default: break; } return true;} }; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*初始化畫筆 設(shè)置畫筆的寬度和顏色*/mPaint = new Paint();mPaint.setStrokeWidth(5);mPaint.setColor(Color.RED);iv_canvas = (ImageView) findViewById(R.id.iv_canvas);button_save = (Button) findViewById(R.id.button_save);button_resume = (Button) findViewById(R.id.button_resume);/*保存按鈕的監(jiān)聽器*/button_save.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {saveBitmap(); }});/*清除按鈕的監(jiān)聽器*/button_resume.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {resumeCanvas(); }});iv_canvas.setOnTouchListener(onTouchListener); } /*保存圖片的方法*/ protected void saveBitmap() {try { /*以png的格式保存的手機內(nèi)存中*/ //No.3 //開始寫代碼,請在這里實現(xiàn)文件存儲的方法,將手指在屏幕上涂鴉的圖形以PNG圖片的形式保存到SD卡中;并發(fā)送廣播進(jìn)行掃描SD卡。 File file //end_code} catch (Exception e) { Toast.makeText(MainActivity.this, '保存圖片失敗', 0).show(); e.printStackTrace();} } /*清除畫布的方法*/ protected void resumeCanvas() {if (baseBitmap != null) { baseBitmap = Bitmap.createBitmap(iv_canvas.getWidth(), iv_canvas.getHeight(), Bitmap.Config.ARGB_8888); canvas = new Canvas(baseBitmap); canvas.drawColor(Color.WHITE); iv_canvas.setImageBitmap(baseBitmap); Toast.makeText(MainActivity.this, '清除畫板成功,可以重新開始繪圖', 0).show();} }}

請輸入代碼

問題解答

回答1:

直接說要做個什么功能比較好,這樣估計沒人回去幫你填代碼

回答2:

能把你的工資分我一份嗎?

標(biāo)簽: java
主站蜘蛛池模板: 欧美精品久久久久久久免费观看 | 亚洲精品福利一区二区三区 | 美女视频永久黄网站在线观看 | 精品国产品欧美日产在线 | 久久r这里只有精品 | 在线免费公开视频 | 狠久久| 怡红院最新免费全部视频 | 午夜宅男宅女看在线观看 | 97精品国产福利一区二区三区 | 九九综合视频 | 精品国产无限资源免费观看 | 精品日韩一区二区三区视频 | 日本一级毛片高清免费观看视频 | 日韩免费高清一级毛片在线 | 国产日韩精品欧美一区 | 国产一区二区三区免费在线视频 | 欧美精品日本一级特黄 | 久草网在线观看 | 麻豆国产视频 | 韩国一级性生活片 | 成人精品视频在线 | 欧美日韩国产在线人成dvd | 在线观看国产日韩 | 欧美精品亚洲精品日韩 | 欧美日韩国产成人精品 | 亚洲偷| 九九99香蕉在线视频免费 | 日韩欧美一级毛片精品6 | 韩国免费网站成人 | 手机亚洲第1页 | 欧美午夜三级我不卡在线观看 | 黄色免费在线观看视频 | 视频一区免费 | 久久久久综合给合狠狠狠 | 久久国产精品久久国产精品 | 久久777国产线看是看精品 | 国产三级网 | 久久久99视频 | 欧美在线观看视频一区 | 国产亚洲欧美精品久久久 |