Intereting Posts
Android Bluetooth Где я могу получить UUID? Android: открыть файл с выбором намерения из URI, полученный с помощью платформы доступа к хранилищу Как отобразить диалог прогресса перед началом активности в Android? Android Webkit: Абсолютно позиционированные элементы не уважают z-index Jacoco Android createDebugCoverageReport не найден Как загрузить миниатюры Youtube в RecyclerView с использованием API Youtube Android – переключение между ландшафтным и портретным режимами означает, что Intent теряет значения Android ssl: javax.net.ssl.SSLPeerUnverifiedException: нет сертификатов peer (еще раз) Google play services 8.4.0 – classes.jar не найден – андроид-студия Как получить подробную информацию о контакте в Android Как обнаружить, что HorizontalScrollView достигли конца Дублирование фрагментов на транзакции фрагментов Использовать обработчик для публикации в пользовательском интерфейсе SQLite Исключение: нет такой таблицы Ошибка Eclipse + FindBugs – файлы фильтра исключить не работают

Как рисовать что-то пальцем в приложении для Android … И сохранить его в Интернете

** ЭТОТ ВОПРОС БЫЛ УСПЕШНО ОТВЕТИЛ И СТАНОВИЛ БЛОГ-ОТЧЕТ <- click **

Привет Я разработчик PHP Я хочу сделать простую вещь – хочу нарисовать что-то на пустой странице на Android-телефоне (пальцем с большим «эмулированным пером») и сохранить растровое изображение как jpeg на Сервер по почте http.

Вот что я до сих пор, но это взято из учебника, который связан с написанием спрайтов для игры. И я не могу его адаптировать

package com.my.example; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.os.Bundle; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnTouchListener; public class DrawCapture extends Activity implements OnTouchListener{ OurView v; Bitmap ball; float x,y; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.draw_capture); v = new OurView(this); v.setOnTouchListener(this); ball = BitmapFactory.decodeResource(getResources(), R.drawable.blueball); x = y = 0; setContentView(v); } @Override protected void onPause(){ super.onPause(); v.pause(); } protected void onResume(){ super.onResume(); v.resume(); } public class OurView extends SurfaceView implements Runnable{ Thread t = null; SurfaceHolder holder; boolean isItOK = false; public OurView(Context context) { super(context); holder = getHolder(); } public void run() { while (isItOK == true){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } //perform canvas drawing if (!holder.getSurface().isValid()){ continue; } Canvas c = holder.lockCanvas(); onDraw(c); holder.unlockCanvasAndPost(c); } } public void onDraw(Canvas c){ c.drawARGB(255, 210, 210, 210); c.drawBitmap(ball, x - (ball.getWidth()/2), y - (ball.getHeight()/2), null); } public void pause(){ isItOK = false; while(true){ try{ t.join(); } catch(InterruptedException e){ e.printStackTrace(); } break; } t = null; } public void resume(){ isItOK = true; t = new Thread(this); t.start(); } } public boolean onTouch(View v, MotionEvent me){ switch (me.getAction()){ case MotionEvent.ACTION_DOWN : x = me.getX(); y = me.getY(); break; case MotionEvent.ACTION_UP : x = me.getX(); y = me.getY(); break; case MotionEvent.ACTION_MOVE : x = me.getX(); y = me.getY(); break; } return true; } } 

И вот XML

 <?xml version="1.0" encoding="utf-8"?> <SurfaceView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > </SurfaceView> 

Может кто-нибудь, пожалуйста, помогите мне? Я чувствую, что я близок – я использую blueball как перо. Я просто хочу «сохранить» это, и, возможно, мне понадобится кнопка (или меню) на странице XML для этого? Я знаю, что это немного прошу, но есть много людей в Интернете, которые спрашивают, как рисовать пальцем и что-то сохранять в «облаке», если люди могут ответить примерами кода (не ссылки). Я обещаю, что я скомпилирую это В правильную учебную часть кода для возможной выгоды для всех. Включая код на стороне сервера PHP, который я уже очень доволен.

Solutions Collecting From Web of "Как рисовать что-то пальцем в приложении для Android … И сохранить его в Интернете"

Вы можете попытаться использовать объект Gesture, предложенный Google, попробуйте выполнить мой следующий код:

Activity1 xml:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" > <android.gesture.GestureOverlayView android:id="@+id/gestures" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fadeEnabled="false" android:fadeOffset="5000000000" android:gestureColor="#000000" android:gestureStrokeType="multiple" android:gestureStrokeWidth="1" android:uncertainGestureColor="#000000" android:layout_above="@+id/save_button" /> <Button android:id="@id/save_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20sp" android:paddingLeft="20sp" android:paddingRight="20sp" android:text="Save" android:textSize="22sp" /> </RelativeLayout> 

Activity1 java:

  Пакет com.testandroidproject;

 Import java.io.ByteArrayOutputStream;

 Import android.app.Activity;
 Import android.content.Intent;
 Import android.gesture.GestureOverlayView;
 Import android.graphics.Bitmap;
 Import android.graphics.Color;
 Import android.os.Bundle;
 Импортировать android.view.View;
 Import android.view.View.OnClickListener;
 Import android.widget.Button;
 Import android.widget.Toast;

 Public class Activity1 расширяет действие {

     Private Button button_save;
     Индивидуальный жест GestureOverlayView;

     @Override
     Protected void onCreate (Bundle savedInstanceState) {
         super.onCreate (savedInstanceState);

         setContentView (R.layout.main);

         Gesture = (GestureOverlayView) findViewById (R.id.gestures);
         Button_save = (кнопка) findViewById (R.id.save_button);

         Button_save.setOnClickListener (новый OnClickListener () {

             @Override
             Public void onClick (просмотр arg0) {
                 пытаться {
                     Растровое изображениеImg = gesture.getGesture (). ToBitmap (100, 100,
                             8, Color.BLACK);

                     ByteArrayOutputStream bos = new ByteArrayOutputStream ();
                     GestureImg.compress (Bitmap.CompressFormat.PNG, 100, bos);
                     Byte [] bArray = bos.toByteArray ();

                     Intent intent = новый Intent (Activity1.this, Activity2.class);

                     Intent.putExtra ("draw", bArray);
                     startActivity (намерение);

                 } Catch (Исключение e) {
                     e.printStackTrace ();
                     Toast.makeText (Activity1.this, «Ничья на строку»,
                             3000) .show ();
                 }
             }
         });
     }

 }

Activity2 xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:orientation="vertical" > <ImageView android:id="@+id/image_saved" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> </LinearLayout> 

Activity2 java:

 package com.testandroidproject; import java.io.ByteArrayInputStream; import android.app.Activity; import android.graphics.BitmapFactory; import android.os.Bundle; import android.widget.ImageView; public class Activity2 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.display_image); ImageView image = (ImageView) findViewById(R.id.image_saved); ByteArrayInputStream imageStreamClient = new ByteArrayInputStream( getIntent().getExtras().getByteArray("draw")); image.setImageBitmap(BitmapFactory.decodeStream(imageStreamClient)); } } 

Надеюсь, вы найдете это полезным.

Я не уверен, какую часть «сохранения» вы пытаетесь выполнить, но я предполагаю, что вы спрашиваете, как сохранить то, что вы нарисовали на холсте, в растровое изображение.

Во-первых, сделайте себе растровое изображение. Скажем, canvasBitmap. Затем:

 c.setBitmap(canvasBitmap); 

Это сохранит все, что было нарисовано в 'canvasBitmap.' Затем, когда пользователь нажимает кнопку для сохранения:

 savedBitmap = Bitmap.copy(canvasBitmap.getConfig(), true); 

Теперь возьмите saveBitmap и отпустите его в облаке. Надеюсь, это поможет.