Android - Özel Bileşenler
Önceden yerleşik bileşenlerde kendi bileşenlerini kendi tanımlı sınıfla genişleten alt sınıfı uygulama
Android, doğrudan Android uygulama geliştirmenizde kullanabileceğiniz Button, TextView, EditText, ListView, CheckBox, RadioButton, Gallery, Spinner, AutoCompleteTextView gibi önceden oluşturulmuş widget'ların harika bir listesini sunar, ancak bir durum olabilir. mevcut widget'ların herhangi birinin mevcut işlevselliğinden memnun değil. Android, ihtiyaçlarınıza uyacak şekilde özelleştirebileceğiniz kendi özel bileşenlerinizi oluşturma araçları sağlar.
Yalnızca mevcut bir pencere öğesi veya mizanpajda küçük ayarlamalar yapmanız gerekiyorsa, widget veya mizanpajı alt sınıflara ayırabilir ve bir ekran öğesinin görünümü ve işlevi üzerinde size kesin kontrol sağlayacak yöntemlerini geçersiz kılabilirsiniz.
Bu eğitim, size özel Görünümleri nasıl oluşturacağınızı ve basit ve kolay adımları kullanarak bunları uygulamanızda nasıl kullanacağınızı açıklar.
Özel Görünüm hiyerarşisindeki Özel Bileşenlere Örnek
Basit Bir Özel Bileşen Oluşturma
Adım | Açıklama |
---|---|
1 | Bir Android uygulaması oluşturmak için Android studio IDE'yi kullanacak ve bunu Hello World Örneği bölümünde açıklandığı gibi com.example.tutorialspoint7.myapplication paketi altında benimuygulamam olarak adlandıracaksınız . |
2 | Veri türleriyle birlikte yeni öznitelikleri tanımlamak için bir XML res / values / attrs.xml dosyası oluşturun. |
3 | Oluştur src / mainactivity.java özel bileşeni tanımlamak için kod dosyası ve eklemek |
4 | Değiştir res / düzeni / activity_main.xml dosyası ve birkaç Varsayılan nitelikler ve yeni özelliklerle birlikte Renkli bileşik görünümü örneğini oluşturmak için kodu ekleyin. |
5 | Android öykünücüsünü başlatmak ve uygulamada yapılan değişikliklerin sonucunu doğrulamak için uygulamayı çalıştırın. |
Res / values klasörünüzde attrs.xml adlı aşağıdaki öznitelikler dosyasını oluşturun.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TimeView">
<declare-styleable name="TimeView">
<attr name="title" format="string" />
<attr name="setColor" format="boolean"/>
</declare-styleable>
</declare-styleable>
</resources>
Aktivite tarafından kullanılan düzen dosyasını aşağıdaki şekilde değiştirin.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<com.example.tutorialspoint7.myapplication.TimeView
android:id="@+id/timeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="40sp"
custom:title="my time view"
custom:setColor="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/simple"
android:layout_below="@id/timeView"
android:layout_marginTop="10dp" />
</RelativeLayout>
Bileşik görünümünüz için timeview adlı aşağıdaki java dosyasını oluşturun.
package com.example.tutorialspoint7.myapplication;
/**
* Created by TutorialsPoint7 on 9/14/2016.
*/
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.TextView;
public class TimeView extends TextView {
private String titleText;
private boolean color;
public TimeView(Context context) {
super(context);
setTimeView();
}
public TimeView(Context context, AttributeSet attrs) {
super(context, attrs);
// retrieved values correspond to the positions of the attributes
TypedArray typedArray = context.obtainStyledAttributes(attrs,
R.styleable.TimeView);
int count = typedArray.getIndexCount();
try{
for (int i = 0; i < count; ++i) {
int attr = typedArray.getIndex(i);
// the attr corresponds to the title attribute
if(attr == R.styleable.TimeView_title) {
// set the text from the layout
titleText = typedArray.getString(attr);
setTimeView();
} else if(attr == R.styleable.TimeView_setColor) {
// set the color of the attr "setColor"
color = typedArray.getBoolean(attr, false);
decorateText();
}
}
}
// the recycle() will be executed obligatorily
finally {
// for reuse
typedArray.recycle();
}
}
public TimeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setTimeView();
}
private void setTimeView() {
// has the format hour.minuits am/pm
SimpleDateFormat dateFormat = new SimpleDateFormat("hh.mm aa");
String time = dateFormat.format(Calendar.getInstance().getTime());
if(this.titleText != null )
setText(this.titleText+" "+time);
else
setText(time);
}
private void decorateText() {
// when we set setColor attribute to true in the XML layout
if(this.color == true){
// set the characteristics and the color of the shadow
setShadowLayer(4, 2, 2, Color.rgb(250, 00, 250));
setBackgroundColor(Color.CYAN);
} else {
setBackgroundColor(Color.RED);
}
}
}
Ana etkinlik java dosyanızı aşağıdaki kodla değiştirin ve uygulamanızı çalıştırın.
package com.example.tutorialspoint7.myapplication;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView simpleText = (TextView) findViewById(R.id.simple);
simpleText.setText("That is a simple TextView");
}
}
Çalışan uygulama aşağıdaki ekran görüntüsü gibi görünmelidir.