jika saya ingin menambahkan baris dalam beberapa aktivitas lain seperti R.layout.main Bagaimana saya bisa menambahkan?
mohan
1
tata letak aktivitas Anda harus mengandung objek View - maka tidak masalah. Anda hanya perlu objek View untuk menggambar
DonGru
1
Saya ingin menggambar garis lurus bagaimana saya bisa memberikan nilai startx start y stopx stopy?
mohan
sebenarnya Anda dapat menemukan bahwa dalam referensi pengembang android, drawLine () memiliki argumen berikut: drawLine (float startX, float startY, float stopX, float stopY, Paint paint)
DonGru
Saya menggambar garis di latar belakang menggunakan metode ini. Saya ingin menghapus garis yang ditarik. Ada saran untuk saya. Bisakah Anda menyarankan saya?
tientuyen07
240
Jika Anda ingin memiliki Garis sederhana di Tata Letak Anda untuk memisahkan dua tampilan, Anda dapat menggunakan Tampilan generik dengan tinggi dan lebar yang Anda inginkan memiliki garis dan warna latar yang ditetapkan.
Dengan pendekatan ini Anda tidak perlu mengesampingkan Tampilan atau menggunakan Kanvas sendiri hanya dengan sederhana dan bersih tambahkan baris dalam xml.
Contoh kode yang saya berikan akan menghasilkan garis yang mengisi lebar layar dan memiliki ketinggian satu dp.
Jika Anda memiliki masalah dengan gambar garis pada layar kecil pertimbangkan untuk mengubah ketinggian garis ke px. Masalahnya adalah bahwa pada layar ldpi garisnya akan setinggi 0,75 piksel. Terkadang ini dapat menghasilkan pembulatan yang membuat garis menghilang. Jika ini merupakan masalah untuk tata letak Anda, tentukan lebar baris file ressource dan buat file ressource terpisah untuk layar kecil yang menetapkan nilainya menjadi 1px, bukan 1dp.
Pendekatan ini hanya dapat digunakan jika Anda ingin garis horizontal atau vertikal yang digunakan untuk membagi elemen tata letak. Jika Anda ingin mencapai sesuatu seperti salib yang ditarik ke dalam gambar, pendekatan saya tidak akan berhasil.
Jika Anda hanya membutuhkan garis horizontal atau vertikal lurus, maka cara termudah adalah dengan menggunakan Viewfile tata letak xml Anda. Anda akan melakukan sesuatu seperti ini:
Berikut adalah gambar dengan dua garis (satu horisontal dan satu vertikal) untuk menunjukkan seperti apa tampilannya:
Dan di sini adalah tata letak xml lengkap untuk itu:
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="TextView1 in vertical linear layout"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@android:color/black"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="TextView2 in vertical linear layout"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="100dp"android:layout_height="100dp"android:padding="10dp"android:text="TextView3 in horizontal linear layout"/><Viewandroid:layout_width="1dp"android:layout_height="match_parent"android:background="@android:color/black"/><TextViewandroid:layout_width="100dp"android:layout_height="100dp"android:padding="10dp"android:text="TextView4 in horizontal linear layout"/></LinearLayout></LinearLayout>
Anda adalah seorang jenius bro ... Saya telah mencoba mencari tahu bagaimana mereka mendapatkan koordinat saat menggambar menggunakan cat ... tapi gambar yang Anda posting membantu saya untuk memahaminya cukup banyak .... Apakah ada ada alat online untuk mensimulasikan grafik seperti itu jadi saya menggunakannya saat coding?
apakah mungkin untuk mendapatkan panggilan balik untuk mengetahui bahwa tampilan telah selesai menggambar
Saya mencoba menggambar dua garis yang berbeda. Sekali jika garis pertama telah ditarik, saya harus menggambar yang kedua ...
Mengapa Anda tidak menggambar kedua garis di onDraw yang sama?
Suragch
1
@ tientuyen07, Jika Anda menggunakan onDraw()kemudian mengelilingi kode gambar Anda dengan if (someCondition) { draw... }, buat someCondition = false, dan panggil invalidate()pandangan Anda. Ini akan menggambar ulang tampilan tanpa garis.
Suragch
22
Anda dapat menggambar beberapa garis lurus pada tampilan menggunakan contoh Cat jari yang ada di Developer android.
contoh tautan
Hanya komentar: mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
Anda akan dapat menggambar garis lurus.
import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.Point;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;publicclassJoinPointsActivityextendsActivity{/** Called when the activity is first created. */Paint mPaint;floatMx1,My1;float x,y;@Overridepublicvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// setContentView(R.layout.main);MyView view1 =newMyView(this);
view1.setBackgroundResource(R.drawable.image_0031_layer_1);
setContentView(view1);
mPaint =newPaint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xFFFF0000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);// mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(10);}publicclassMyViewextendsView{privatestaticfinalfloat MINP =0.25f;privatestaticfinalfloat MAXP =0.75f;privateBitmap mBitmap;privateCanvas mCanvas;privatePath mPath;privatePaint mBitmapPaint;publicMyView(Context c){super(c);
mPath =newPath();
mBitmapPaint =newPaint(Paint.DITHER_FLAG);}@Overrideprotectedvoid onSizeChanged(int w,int h,int oldw,int oldh){super.onSizeChanged(w, h, oldw, oldh);
mBitmap =Bitmap.createBitmap(w, h,Bitmap.Config.ARGB_8888);
mCanvas =newCanvas(mBitmap);}@Overrideprotectedvoid onDraw(Canvas canvas){
canvas.drawColor(0xFFAAAAAA);// canvas.drawLine(mX, mY, Mx1, My1, mPaint);// canvas.drawLine(mX, mY, x, y, mPaint);
canvas.drawBitmap(mBitmap,0,0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);}privatefloat mX, mY;privatestaticfinalfloat TOUCH_TOLERANCE =4;privatevoid touch_start(float x,float y){
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;}privatevoid touch_move(float x,float y){float dx =Math.abs(x - mX);float dy =Math.abs(y - mY);if(dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE){// mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;}}privatevoid touch_up(){
mPath.lineTo(mX, mY);// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);// kill this so we don't double draw
mPath.reset();}@Overridepublicboolean onTouchEvent(MotionEventevent){float x =event.getX();float y =event.getY();switch(event.getAction()){caseMotionEvent.ACTION_DOWN:
touch_start(x, y);
invalidate();break;caseMotionEvent.ACTION_MOVE:
touch_move(x, y);
invalidate();break;caseMotionEvent.ACTION_UP:
touch_up();// Mx1=(int) event.getX();// My1= (int) event.getY();
invalidate();break;}returntrue;}}}
Dapatkah Seseorang membantu saya bagaimana saya bisa melihat elemen xml saya pada tampilan saya yang berada di tata letak relatif ?? kamu bisa pergi melalui contoh di atas dan menyarankan saya.
Hema
9
package com.example.helloandroid;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.view.View;publicclassHelloAndroid2ActivityextendsActivity{/** Called when the activity is first created. */DrawView drawView;@Overridepublicvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
drawView =newDrawView(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);}classDrawViewextendsView{Paint paint =newPaint();publicDrawView(Context context){super(context);
paint.setColor(Color.BLUE);}@Overridepublicvoid onDraw(Canvas canvas){super.onDraw(canvas);
canvas.drawLine(10,20,30,40, paint);
canvas.drawLine(20,10,50,20, paint);}}}
Jawaban:
Yang ini menggambar 2 garis yang membentuk tanda silang di kiri atas layar:
DrawView.java
Aktivitas untuk memulainya:
StartDraw.java
sumber
Jika Anda ingin memiliki Garis sederhana di Tata Letak Anda untuk memisahkan dua tampilan, Anda dapat menggunakan Tampilan generik dengan tinggi dan lebar yang Anda inginkan memiliki garis dan warna latar yang ditetapkan.
Dengan pendekatan ini Anda tidak perlu mengesampingkan Tampilan atau menggunakan Kanvas sendiri hanya dengan sederhana dan bersih tambahkan baris dalam xml.
Contoh kode yang saya berikan akan menghasilkan garis yang mengisi lebar layar dan memiliki ketinggian satu dp.
Jika Anda memiliki masalah dengan gambar garis pada layar kecil pertimbangkan untuk mengubah ketinggian garis ke px. Masalahnya adalah bahwa pada layar ldpi garisnya akan setinggi 0,75 piksel. Terkadang ini dapat menghasilkan pembulatan yang membuat garis menghilang. Jika ini merupakan masalah untuk tata letak Anda, tentukan lebar baris file ressource dan buat file ressource terpisah untuk layar kecil yang menetapkan nilainya menjadi 1px, bukan 1dp.
Pendekatan ini hanya dapat digunakan jika Anda ingin garis horizontal atau vertikal yang digunakan untuk membagi elemen tata letak. Jika Anda ingin mencapai sesuatu seperti salib yang ditarik ke dalam gambar, pendekatan saya tidak akan berhasil.
sumber
Ada dua cara utama Anda bisa menggambar garis, dengan menggunakan
Canvas
atau dengan menggunakanView
.Menggambar Garis dengan Kanvas
Dari dokumentasi kita melihat bahwa kita perlu menggunakan metode berikut:
Ini gambarnya:
The
Paint
objek hanya memberitahuCanvas
apa warna cat garis, seberapa luas itu harus, dan sebagainya.Berikut ini beberapa contoh kode:
Menggambar Garis dengan Tampilan
Jika Anda hanya membutuhkan garis horizontal atau vertikal lurus, maka cara termudah adalah dengan menggunakan
View
file tata letak xml Anda. Anda akan melakukan sesuatu seperti ini:Berikut adalah gambar dengan dua garis (satu horisontal dan satu vertikal) untuk menunjukkan seperti apa tampilannya:
Dan di sini adalah tata letak xml lengkap untuk itu:
sumber
onDraw()
kemudian mengelilingi kode gambar Anda denganif (someCondition) { draw... }
, buatsomeCondition = false
, dan panggilinvalidate()
pandangan Anda. Ini akan menggambar ulang tampilan tanpa garis.Anda dapat menggambar beberapa garis lurus pada tampilan menggunakan contoh Cat jari yang ada di Developer android. contoh tautan
Hanya komentar:
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
Anda akan dapat menggambar garis lurus.sumber
sumber
untuk garis horizontal pada tata letak:
untuk garis vertikal pada tata letak:
sumber
Sederhana
sumber
Ini akan membuat garis horizontal lurus, semoga membantu !.
sumber
Anda dapat membuat drawable seperti lingkaran, garis, persegi panjang dll melalui bentuk dalam xml sebagai berikut:
sumber
kode ini menambahkan garis horizontal ke tata letak linier
sumber
sumber
Untuk memperbaiki jawaban yang diberikan oleh @Jususz
Saya menambahkan ini ke gaya saya:
Kemudian di layout saya kurang kode dan lebih mudah dibaca.
jika Anda ingin melakukan spasi garis horizontal maka lakukan hal di atas.
Dan untuk garis vertikal antara dua Tampilan Anda harus mengganti android: parameter layout_width (atribut) dengan android: layout_height
sumber
Pendekatan lain untuk menggambar garis secara terprogram menggunakan ImageView
sumber
Jika Anda bekerja dengan
ConstraintLayout
Anda, Anda perlu mendefinisikan setidaknya 2 kendala agar baris tersebut muncul. Seperti ini:Padahal saya mendefinisikan 3 kendala.
sumber
atau jika Anda hanya ingin garis
sumber