2013-06-08 2 views
5

У меня есть XML-макет, который содержит все мои кнопки и изображения, и я хочу, чтобы движущееся облако находилось в верхней части моего макета. поэтому я создал представление и сделал мое перемещение облака, однако я не смог связать представление с макетом. вот мой взгляд кодКак добавить View to XML layout 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(); 
} 

} 

и вот мой 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 новый в анимации в Android может у объяснить в деталях, как я могу связать представление с макетом. , и если он не будет работать над другими классами, кроме View, которые я могу использовать.

Спасибо за ваше время и внимание. и извините за мой плохой английский.

+0

Использование макета инфлятор, чтобы добавить новый вид. – URAndroid

+0

не могли бы вы показать в коде, как использовать надув, я никогда не использовал его до – Coderji

+0

, см. Ответ ниже. – URAndroid

ответ

2

Ссылка для Android-разработчика может быть полезной для вас.

Define Custom Attributes

Как определить атрибут:

Чтобы определить пользовательские атрибуты, добавлять ресурсы в проект. Обычно эти ресурсы вводятся в файл res/values/attrs.xml. Вот пример 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> 

Как использовать в 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> 

Читать подробнее идут вслед.

2

Используйте это:

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

Мне нужно добавить это на MainActivity или View activity ?! – Coderji

+0

где находится ваш человек. Вы должны добавить это в основную деятельность. – URAndroid

+0

это дает мне PointerNullException. и моя MainActivity расширяет действие, если у меня нет другого класса, чтобы расширить представление, чтобы сделать анимацию и импортировать onDraw. как я упомянул im new на этом, пожалуйста, будьте терпеливы со мной, и я имел в виду CloudView, когда я сказал, что мой вид активности – Coderji