2013-06-08 8 views
5

Ich habe ein XML-Layout, das alle meine Schaltflächen und Bilder enthalten, und ich möchte eine bewegliche Wolke auf der Oberseite meines Layouts. Also habe ich eine Ansicht erstellt und meine Cloud verschoben, jedoch konnte ich die Ansicht nicht mit dem Layout verknüpfen. hier ist meine Ansicht Codewie man Ansicht zu XML-Layout hinzufügen Android

public class CloudView extends View { 

Bitmap cloud; 
int ChangingX; 


public CloudView(Context context) { 
    // TODO Auto-generated constructor stub 
    super(context); 
    cloud = BitmapFactory.decodeResource(getResources(), R.drawable.cloud); 
    ChangingX = 50; 

} 

@Override 
protected void onDraw(Canvas canvas) { 
    // TODO Auto-generated method stub 
    super.onDraw(canvas); 
    canvas.drawBitmap(cloud, ChangingX , 50, null); 
    if (ChangingX < canvas.getWidth()) 
     ChangingX += 2; 
    else 
     ChangingX = 50; 
    invalidate(); 
} 

} 

und hier ist mein MainActivity

public class MainActivity extends Activity { 

CloudView myView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    myView = new CloudView(this); 
    setContentView(myView); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

Im neu bei Animation in Android u kann in Einzelheiten erklärt, wie ich eine Ansicht mit Layout verknüpfen. und wenn es nicht funktioniert, was andere Klassen außer View, die ich verwenden kann.

Vielen Dank für Ihre Zeit und Rücksicht. und Entschuldigung für mein schlechtes Englisch.

+0

Verwenden Layout inflater neue Ansicht hinzuzufügen. – URAndroid

+0

können Sie bitte im Code zeigen, wie inflater zu verwenden, ich habe es noch nie verwendet – Coderji

+0

siehe die Antwort unten. – URAndroid

Antwort

2

Hier ist Android Developer Link möglicherweise nützlich für Sie.

Define Custom Attributes

Wie Attribut definieren:

zu definieren benutzerdefinierte Attribute, fügen Sie Ressourcen zum Projekt. Es ist üblich, diese Ressourcen in eine res/values/attrs.xml Datei zu legen. Hier ist ein Beispiel für eine attrs.xml Datei:

<resources> 
    <declare-styleable name="PieChart"> 
     <attr name="showText" format="boolean" /> 
     <attr name="labelPosition" format="enum"> 
      <enum name="left" value="0"/> 
      <enum name="right" value="1"/> 
     </attr> 
    </declare-styleable> 
</resources> 

Wie in verwenden XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews"> 
<com.example.customviews.charting.PieChart 
    custom:showText="true" 
    custom:labelPosition="left" /> 
</LinearLayout> 

lesen, um weitere Informationen zu folgen.

2

verwenden:

View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.activity_my_vault, null,false); 
     this.addContentView(viewToLoad); 
+0

Ich muss dies auf MainActivity oder View-Aktivität hinzufügen ?! – Coderji

+0

wo ist dein View Activity-Benutzer? Sie müssen dies in der Hauptaktivität hinzufügen. – URAndroid

+0

es gibt mir PointerNullException. und meine MainActivity erweitert Aktivität sollte nicht eine andere Klasse zu erweitern View, um die Animation zu tun und OnDraw zu importieren. Wie ich im neuen hier erwähnt habe, bitte geduldig mit mir und ich meinte CloudView, als ich meine Ansicht Aktivität – Coderji

Verwandte Themen