ajouter imageview dynamiquement à vue
je suis prise de jeu android qui utilisent la classe view.je ne suis pas à l'aide de mise en page.toutes mes images est un dessin avec de la toile.Maintenant mon problème est que je ne peut pas donner une image bitmap
palpable événement comme vous le savez.je suis en train d'ajouter imageview de façon dynamique pour ma classe de vue
utilisation tactile de l'événement.pourquoi j'essaie d'ajouter imageview dynamiquement?Parce que je ne suis pas à l'aide de
mise en page.mais je ne pouvais pas.est-il un corps?
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();
}
}
}
Si ma réponse vous aide à vous alors s'il vous plaît accepter, et il va aider les autres aussi.
OriginalL'auteur Tunç Doğan | 2012-12-22
Vous devez vous connecter pour publier un commentaire.
C'est pour l'ajout de imageview à une mise en page où l'Activité de la classe est étendu
C'est pour l'ajout de imageview à une toile où la classe d'Affichage étendu
D'abord, vous ne pouvez pas placer toute imageview, modifier du texte ou des boutons à l'aide de la toile. Au lieu de cela, vous avez à le dessiner. Afin de créer une mise en page personnalisée et tirage de mise en page, avec de la toile
Essayer cela, Elle pourrait vous aider. dans
onDraw(..)
Et de prendre un coup d'oeil à cet autre exemple : Cliquez ici
Il donne un autre moyen d'ajouter des vues
oui, vous pouvez ajouter cette image à tout point de vue .
quel est l'objet de mise en page ici(mise en page.tirage)? tu veux dire lL objet?
malheureusement, il a donné exception
ok, maintenant il n'y a pas d'exception, mais il n'y a pas d'image sur l'écran
OriginalL'auteur RajeshVijayakumar
Utilisez code ci-dessous pour que.
Pour Créer ImageView Dynamiquement
Pour Ajouter à votre Vue écrire de code ci-dessous avant de
setContentView(custom);
(Si le GamePlay est votre point de Vue de la Classe)Alors s'il vous plaît googler en parler parce que je ne sais pas comment faire pour ajouter de la méthode add() dans la classe de vue personnalisée.
OriginalL'auteur Dipak Keshariya