hinzufügen Bildansicht dynamisch anzeigen
dass ich android-Spiele, die über das view-Klasse.ich bin nicht mit layout.alle meine Bilder ist das zeichnen mit canvas.Nun mein problem ist ich kann nicht geben Sie eine bitmap
touchable Fall, wie Sie wissen.ich bin versucht, hinzuzufügen Bildansicht dynamisch zu meiner view-Klasse zu
verwenden berührbare Veranstaltung.warum ich versuche, um Bildansicht dynamisch?Weil ich bin nicht mit
layout.aber ich konnte nicht.gibt es irgendwelche Körper zu helfen?
here is my code:
package com.example.poolmaster;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
private int cuePosx,cuePosy;
int cueHeight,cueWeight;
double rotatingAngle;
int height;
int wwidth;
int cueHeight2,cueWeight2;
Bitmap table,stick,raise;
ImageView button = new ImageView(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rotatingAngle=0;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
wwidth = displaymetrics.widthPixels;
cueHeight2=height/2;
cueWeight2=wwidth/2;
System.out.println("**************************************");
System.out.println("height " +height);
System.out.println("weight" +wwidth);
System.out.println("**************************************");
//Set generic layout parameters
//Modify this
GamePlay custom = new GamePlay(this);
setContentView(custom);
//setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_MOVE){
//cuePosy+=10;
//System.out.println("xCORDİNATES!!!! " +ev.getX());
//System.out.println("yCORDİNATES!!!! " +ev.getY());
rotatingAngle=getAngle(ev.getX(), ev.getY());
System.out.println("Angle " +rotatingAngle);
}
if(ev.getAction()==MotionEvent.ACTION_DOWN){
System.out.println("****************** ACTİON DOWN ****************");
//cueHeight2+=10;
//cueWeight2+=20;
//cuePosy=320;
}
if(ev.getAction()==MotionEvent.ACTION_UP){
System.out.println("****************** ACTİON DOWN ****************");
//cueHeight2-=10;
//cueWeight2-=20;
//cuePosy=320;
}
return true;
}
private double getAngle(double xTouch, double yTouch) {
double theta;
theta= Math.toDegrees( Math.atan2( height/2-yTouch , xTouch-wwidth/2) );
return theta;
}
public class GamePlay extends View{
public GamePlay(Context context) {
super(context);
//TODO Auto-generated constructor stub
table=BitmapFactory.decodeResource(getResources(), R.drawable.bg);
table= Bitmap.createScaledBitmap(table, wwidth, height, true);
stick=BitmapFactory.decodeResource(getResources(), R.drawable.stick);
raise=BitmapFactory.decodeResource(getResources(), R.drawable.raise);
cueHeight=stick.getHeight();
System.out.println("ıstaka " +cueHeight);
cueWeight=stick.getWidth();
cuePosx=wwidth/2;
cuePosy=height-cueHeight-180;
}
@SuppressLint({ "DrawAllocation", "DrawAllocation" })
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Matrix matrix = new Matrix();
matrix.setTranslate(cueWeight2, cueHeight2);
matrix.postRotate((float)rotatingAngle,cueWeight2, cueHeight2); //anti-clockwise by 90 degrees
//create a new bitmap from the original using the matrix to transform the result
Bitmap rotatedBitmap = Bitmap.createBitmap(stick , 0, 0, stick .getWidth(), stick .getHeight(), matrix,false);
canvas.save(); //Save the position of the canvas.
canvas.restore();
//Rotate the canvas.
canvas.drawBitmap(table, 0, 0, null); //Draw the ball on the rotated canvas.
canvas.drawBitmap(stick, matrix,null);
canvas.drawBitmap(raise, 0, 0,null);
invalidate();
}
}
}
Wenn meine Antwort Ihnen hilft, dann bitte akzeptieren Sie es, so hilft es anderen auch.
InformationsquelleAutor Tunç Doğan | 2012-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist für das hinzufügen Bildansicht zu einem layout, in dem Activity-Klasse wird erweitert
Dies ist für das hinzufügen Bildansicht auf eine Leinwand, wo die View-Klasse erweitert
Zunächst, du kannst nicht jede Bildansicht, Bearbeiten von text mit den Tasten oder mit Leinwand. Stattdessen müssen Sie, um es zu zeichnen. So erstellen Sie eine benutzerdefinierte layout und zeichnen Sie das layout mit Leinwand
Versuchen Sie dies, Es könnte Ihnen helfen. in
onDraw(..)
Und werfen Sie einen Blick auf dieses ein weiteres Beispiel : Klicken Sie hier
Gibt es ein anderes Verfahren zum hinzufügen von Ansichten
ja, kann man dieses Bild an einer beliebigen Ansicht .
was ist ein layout-Objekt hier(layout.ziehen)? du meinst, lL-Objekt?
leider gab es Ausnahme
ok, jetzt gibt es keine Ausnahme, aber es ist kein Bild auf dem Bildschirm
InformationsquelleAutor RajeshVijayakumar
Folgenden code verwenden.
Erstellen Bildansicht Dynamisch
Add-in Ihre Anzeigen schreiben Sie folgenden code vor
setContentView(custom);
(Wenn GamePlay ist deine Ansicht Klasse)Dann bitte googeln, weil ich nicht weiß, wie man hinzufügen add () - Methode in einer benutzerdefinierten Ansicht Klasse.
InformationsquelleAutor Dipak Keshariya