En el desarrollo de Android, los ingenieros de Google han empaquetado muchos botones para nosotros, lo que hace que nuestro desarrollo sea muy conveniente y conveniente.
Así que vamos a conocer los botones de uso común en la actualidad. Ya he hablado sobre el botón Botón en detalle en el curso anterior, por lo que no lo repetiré aquí.
Evento de clic en el botón del monitor de desarrollo de Android : http://www.cnblogs.com/xiao-chuan/p/6074075.html
1. Botones comunes
1. Propiedades públicas del botón
Los atributos públicos del botón incluyen: 1) Atributos de estilo de uso común
un fondo
b, margen
C,……
2) ancho y alto
a, ancho
b, altura
3) tamaño
Un tamaño
b, máx. (mín.)
C,……
4) Contenido de visualización de texto
un texto
b, pista
5) Identificación de clave única
ayuda
6) Haga clic en evento
2, vista de texto:
Vista de texto: cuadro de texto
autoLink: la ruta predeterminada para el texto
<TextView android:layout_width="match_parent" android:layout_height="50sp" android:text="中国移动:10086" android:textSize="20sp" android:autoLink="phone" /> <TextView android:layout_width="match_parent " android:layout_height="50sp" android:text="站长邮箱:[email protected]" android:textSize="20sp" android:autoLink="email" /> <TextView android:layout_width="match_parent" android:layout_height="50sp" android:text="Encuentre Baidu si necesita algo: http://www.baidu.com" android:textSize="20sp" android:autoLink="web" />
Así que aquí, si hace clic en el primer TextView, el efecto predeterminado es el teléfono, entonces, ¿qué pasa con el segundo y el tercero~~ Aquí está el diagrama de efectos de la realización, aquí puede ver que no especifiqué el color del texto, ¡aquí está la atención, autoLink tiene un color predeterminado!
3, editar texto
Editar cuadro de entrada de texto
inputType: el formato de texto del cuadro de entrada
<EditText android:id="@+id/userName" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户名" android:textColor="@android:color/holo_red_light" android :textSize="20sp" android:inputType="text" android:maxLength="12" /> <EditText android:id="@+id/userAge" android:layout_width="match_parent" android:layout_height="wrap_content" android :hint="请输入年龄" androide:maxLength="3" android:numeric="integer" android:inputType="number" /> <EditText android:id="@+id/userPwd" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:maxLength="12" android:password="true" android: inputType="textPassword" /> <EditText android:id="@+id/userAddress" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入详细地址" android:maxLength="500 " androide:líneas="3" androide:inputType="textoMultilínea" />
tipo de entrada:
texto: formato de texto
textPassword: formato de contraseña
número: formato de número
textMultiLink: formato de barra de direcciones
……
Nota: Cuando escriba, el método de entrada cambiará automáticamente el método de entrada. Si ingresa en formato de contraseña, el contenido de entrada no será visible.
4, barra
Aquí se dividen en:
1) SeekBar: programación, como nuestro volumen, brillo, etc.
2) RatingBar: Elija, los más comunes son comentarios en sitios web de comercio electrónico, etc.
3) Barra de progreso: carga, descarga, carga de imágenes, descarga de archivos, etc.
<TextView android:id="@+id/showText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="我是一个TextView" android:textSize="20sp" /> <SeekBar android: id="@+id/seekBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="50" android:progress="20" /> <RatingBar android:id="@+id/ calificaciónBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:rating="1" android:stepSize="1" /> <ProgressBar android:id="@+id/progressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="10" /> <ProgressBar android:id="@+id/progressBar2" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="10" style="?android:attr/progressBarStyleLarge" /> <ProgressBar android:id="@+id/progressBar3" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="10" style="?android:attr/progressBarStyleHorizontal" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android :orientación="horizontal"> <Botón android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="开始" android:onClick="doStart" /> <Botón android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="end" android:onClick="doStop" /> </LinearLayout>
Efecto de página:
Lo siguiente es para que todos tengan más claro sus efectos y diferencias:
SeekBar privado sb; TextView privado mostrarTexto; RatingBar privado rb; Barra de progreso privada pb3; @Override protected void onCreate(Paquete de estado de instancia guardado) { super.onCreate(estado de instancia guardado); setContentView(R.layout.activity_seek_bars); showText=(TextView)findViewById(R.id.showText); sb=(SeekBar)findViewById(R.id.seekBar); rb=(RatingBar)findViewById(R.id.ratingBar); pb3=(ProgressBar)findViewById(R.id.progressBar3); //为seekBar绑定事件 sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progreso, boolean fromUser) { //改变showText字体大小 showText.setTextSize(progreso); } }); rb.setOnRatingBarChangeListener(nuevo OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { Toast.makeText(SeekBarsActivity.this, "你选择了"+rating+"星", 3000).show(); } ); } //Empezar a descargar [Nota: excepto ProgressBar, toda la interfaz de usuario debe estar en el subproceso principal de la interfaz de usuario medio operación] booleano isRun=true; public void doStart(View view) throws Exception{ isRun=true; //Cree un subproceso que ejecute los cambios de la barra de progreso new Thread(new Runnable() { @Override public void run() { / /Las operaciones que consumen mucho tiempo no se pueden ejecutar en el subproceso principal while(isRun){ if(pb3.getProgress()<100){ pb3.setProgress(pb3.getProgress()+1); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } }else{ isRun=false; //La forma más sencilla de implementar la actualización de la interfaz de usuario multiproceso runOnUiThread(new Runnable() { public void run() { Toast.makeText(SeekBarsActivity.this, "Descarga completa " ,3000).show(); } }); } } } }).start(); } //finalizar descarga public void doStop(View view){ isRun=false; }
Nota:
1) Excepto ProgressBar, toda la interfaz de usuario debe operarse en el subproceso principal de la interfaz de usuario; de lo contrario, se informará un error.
2) Las operaciones que consumen mucho tiempo no se pueden realizar en el hilo principal, de lo contrario se informará un error.
3) Los ingenieros de Google han hecho que Android 4.0 y versiones posteriores no admitan los dos puntos anteriores, por lo que algunas personas se verán enredadas. una versión baja necesita Cómo hacer ~ ~ piensa por ti mismo, ¡una pregunta muy simple!
5. Cuadros de imagen y selección múltiple de selección única
1) botón de imagen: botón de imagen
2) imageView: vista de imagen
ImageView en comparación con HTML5:
imageView: funciona con mayor fluidez y se puede utilizar sin una red. .
HTML5: el tiempo de ejecución no es lo suficientemente fluido y será inútil sin Internet... Pero la ventaja es que la página es más hermosa y la transmisión de datos es más conveniente. .
3) RadioButton: botón de radio, cada elemento es mutuamente excluyente, solo se puede seleccionar uno, como el género
4) Casilla de verificación: botón de opción múltiple, puede elegir múltiples, como pasatiempos
5) ToggleButton: un solo botón de aviso, como un interruptor
<RadioGroup android:id="@+id/rgsex" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton android:id="@+id/sexOne" android: layout_width="wrap_content" android:layout_height="wrap_content" android:text="男" android:checked="true" /> <RadioButton android:id="@+id/sexTwo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" /> </RadioGroup> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <CheckBox android:id="@+id/cb1" android:layout_width="wrap_content" android:layout_height="wrap_content " android:text="篮球" /> <CheckBox android:id="@+id/cb2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fútbol" /> <CheckBox android:id="@+id/cb3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="羽毛球" /> </LinearLayout> <ToggleButton android:id="@+id/stateButton" android:layout_width="wrap_content" android:layout_height ="wrap_content" android:textOn="开灯" android:textOff="关灯" android:checked="true" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@dibujable/imagen001" android:scaleType="fitXY" android:maxWidth="120dp" maxWidth="120dp" android:maxHeight="60dp" android:adjustViewBounds="true" android:onClick="getValues" />
El efecto es el siguiente:
pd: La imagen está codificada porque no puedo encontrar una imagen adecuada y no quiero anunciarme a otros y no tengo dinero...
Lo siguiente también es para aclarar sus efectos y diferencias:
grupo de radio privado rg; casilla de verificación privada cb1, cb2, cb3; @Override protected void onCreate(Paquete de estado de instancia guardado) { super.onCreate(estado de instancia guardado); setContentView(R.layout.actividad_botones); cb1=(CheckBox)findViewById(R.id.cb1); cb2=(CheckBox)findViewById(R.id.cb2); cb3=(CheckBox)findViewById(R.id.cb3); rg=(RadioGroup)findViewById(R.id.rgsex); //监听单选按钮组事件 rg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, intcheckedId) { RadioButton rb=(RadioButton)findViewById(checkedId); Toast.makeText(ButtonsActivity.this, "Has elegido:"+rb.getText().toString(), 3000).show(); } }); } // Valor [ botón de radio | casilla de verificación] public void getValues( Ver vista){ //botón de opción RadioButton rb=(RadioButton)findViewById(rg.getCheckedRadioButtonId()); StringBuffer sb=new StringBuffer(); sb.append("Gender:"+rb.getText() .toString()+ "\n"); // casilla de verificación sb.append("Hobby:"); if(cb1.isChecked()) sb.append(cb1.getText().toString()+", "); if(cb2.isChecked()) sb.append( cb2.getText().toString()+","); if(cb3.isChecked()) sb.agregar(cb3.getText().toString()+","); Toast.makeText(esto, sb.toString(), 5000).show(); }
PD: los ingenieros de Google lo empaquetaron para nosotros y podemos usarlo directamente. También podemos escribir un marco de bajo nivel para implementar estos botones. Creo que ya ha escrito la implementación de estos botones cuando está aprendiendo Java. De hecho, el código subyacente encapsulado por los ingenieros de Google también se implementa de esa manera. Solo digo ~ ¿quién es tan aburrido? ¡Los confeccionados no lo necesitan! Pero si desarrollas el marco de trabajo de Android en el futuro... debes escribirlo tú mismo~ Después de que se actualicen los conocimientos básicos... implicará contenido más avanzado jajajaja... ¡todavía no está listo!
2. Resumen
1. De hecho, hay muchos de uso común y algunos que no son de uso común. De todos modos, espero que todos puedan desarrollar el hábito del autoaprendizaje... ¡especialmente en la empresa!
2. El desarrollo del marco de trabajo de Android es simplemente conocimiento de Java, por lo que no tiene nada que ver con el desarrollo de Android, ¡pero también requiere una gran comprensión de Android!
3. Se puede anidar en las páginas de Android, ¡pero es necesario distinguir la diferencia entre HTML5 y la paleta de Android!
4. La diferencia entre TextView y EditView es realmente muy grande...
5. La paleta es realmente significativa solo cuando se usa junto con los eventos correspondientes y la lógica comercial, como la transmisión de datos ~~ Lo explicaré en detalle en cursos futuros.