2013-06-08 29 views
5

Mam układ XML, który zawiera wszystkie moje przyciski i obrazy i chcę, aby poruszająca się chmura była u góry mojego układu. więc stworzyłem widok i zrobiłem ruch w chmurze, jednak nie mogłem połączyć widoku z układem. tutaj jest mój kod widokjak dodać widok do układu XML 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(); 
} 

} 

i tu jest mój główną działalność

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 nowego w animacji w Android może u wyjaśnić szczegółowo w jaki sposób można połączyć widok z układu. i jeśli nie będzie działać, jakie inne klasy oprócz Zobacz, że mogę używać.

Dziękujemy za poświęcony czas i uwagę. i przepraszam za mój zły angielski.

+0

Zastosowanie układ inflater dodać nowy widok. – URAndroid

+0

możesz pokazać w kodzie, jak używać inflater, nigdy nie użyłem go przed – Coderji

+0

zobacz odpowiedź poniżej. – URAndroid

Odpowiedz

2

Tutaj jest Android Developer Link może mi się przydać.

Define Custom Attributes

Jak zdefiniować atrybut:

do zdefiniowania atrybutów niestandardowych, dodawania zasobów do projektu. Zwyczajowo umieszcza się te zasoby w pliku res/values/attrs.xml. Poniżej znajduje się przykład pliku attrs.xml:

<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> 

Jak korzystać w 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> 

Przeczytaj więcej szczegółów na temat naśladowania.

2

Użyj tego:

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

Muszę dodać to na MainActivity lub View activity ?! – Coderji

+0

gdzie jest twój człowiek Zobacz aktywność. Musisz dodać to w głównej aktywności. – URAndroid

+0

daje mi wyjątek PointerNullException. i moja MainActivity rozszerza działanie nie powinien mieć innej klasy do rozszerzenia widoku, aby zrobić animację i zaimportować naDraw. jak wspomniałem im nowy w tym proszę o cierpliwość ze mną i miałem na myśli CloudView, kiedy powiedziałem, że mój człowiek View – Coderji

Powiązane problemy