Я новичок в Android.Can, кто-нибудь скажет мне, что это за технология? Я хочу добавить эту функцию в поле пароля. Могу ли я узнать, что является правильным способом для достижения моей цели? Можете ли вы помочь мне с любым кодом или ссылкой на руководство по правильному внедрению?
Как реализовать это в Android
Ответ 1
У вас есть много возможностей для создания такого макета:
- Родитель
RelativeLayout
, aLinearLayout
с четырьмя точками вверху, а внизу отображаются ваши представления с атрибутами как toLeftOf, toRightOf и т.д. - создайте методonClickListener
, чтобы изменить их состояние и сохранить номер. - Несколько
LinearLayout
с атрибутамиweight
для заполнения всего пространства, и каждое из видов (округленное число) заполняет пробел (см. пример ниже, чтобы понять атрибут веса) - или несколькоRelativeLayout
- или дажеTableLayout
. - Или
LinearLayout
иGridView
ниже с помощью методаItemClickListener
.
Согласно комментариям ниже вашего вопроса, есть много возможностей. Я выбираю один из них с Linear и RelativeLayout. Это может быть примерно так:
<!-- named activity_main.xml -->
<RelativeLayout
... >
<LinearLayout
android:id="@+id/contain"
... android:layout_width="250dip"
android:orientation="horizontal"
android:weightSum="4" >
<!-- weightSum to 4 = whatever the screen, display
my children views in 4 sections -->
<View
... android:layout_weight="1"
android:background="@drawable/green_dots" />
<!-- weight to 1 = this takes one section -->
<View
... android:layout_weight="1"
android:background="@drawable/green_dots" />
<!-- weight to 1 = this takes one section -->
<View
... android:layout_weight="1"
android:background="@drawable/green_dots" />
<View
... android:layout_weight="1"
android:background="@drawable/green_dots" />
</LinearLayout>
<RelativeLayout
android:layout_below="@id/contain" ... >
... Here display your buttons (or textviews) with
custom drawable background for each one
</RelativeLayout>
И в вашем классе Activity
он реализует onClickListener
следующим образом:
public class MyActivity extends Activity implements OnClickListener { }
Затем в ваших методах внутри этого действия:
// init your buttons var
Button one, two, three, four, five ...;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the layout above
setContentView(R.layout.activity_main);
// init your buttons
one = (Button) findViewById(R.id.button1);
two = (Button) findViewById(R.id.button2);
three = (Button) findViewById(R.id.button3);
... etc.
// set them to your implementation
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
... etc.
}
// call this function when one button is pressed
public void onClick(View view) {
// retrieves the id of clicked button
switch(view.getId()) {
case R.id.button1:
methodToSaveNumber(int);
break;
case R.id.button2:
methodToSaveNumber(int);
break;
case R.id.button3:
methodToSaveNumber(int);
break;
... etc.
}
}
Затем в вашем методе methodToSaveNumber
:
// finally, your method to save the number of the password
public void methodToSaveNumber(int i) {
... do something.
... change the state of the buttons, the dots, whatever you want
}
И чтобы показать вам, как это работает, вытачиваемый green_dots
может быть таким:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- radius -->
<corners
android:radius="20dp" />
<!-- border -->
<stroke
android:color="@android:color/green"
android:width="2dp" />
<!-- background (transparent) -->
<solid
android:color="#00000000" />
</shape>
Вы должны сообщить вам о макетах и о том, как это работает, click event и его прослушиватель, чертежи и их состояния (сфокусированные, нажатые, отключенные,...) и, наконец, Надеюсь, вы получите то, что хотите.
Счастливое кодирование!