Android入门学习:GUI的编写/布局
在上次学习了Android的基本开发环境搭建等一系列基础操作后,最近又学习了GUI的布局、控件的设计存放等。这里记录下自己的学习历程,包括以下内容:
- 常用控件
常用控件
文本(TextView)
以下为一段文本控件的代码,使用于布局文件xml中
<TextView
android:id="@+id/Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is Text"
android:textSize="24sp"
android:textColor="#00ff00"
/>
对于id和控件大小的控制,上次的博客已经提过。这里text及下面的3个属性代表显示内容/字体大小/字体颜色。要使用的时候按需要调整即可。
按钮(Button)
<Button
android:id="@+id/button"
android:layout_width="330dp"
android:layout_height="74dp"
android:layout_marginTop="50dp"
android:layout_marginLeft="50dp"
android:text="Button" />
/>
这里虽然按钮的字体设为Button,但实际效果却是全部大写。
为了矫正内容,需要添加一行属性:android:textAllCaps=”false”,这样就恢复正常了。
文本框(EditText)
<EditText
android:id="@+id/EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Please input"
android:maxLines="1"
/>
/>
这里hint属性代表预输入的文本提示
maxLine代表内容最多可以显示的行数
这里的图中我输入了不止一行的内容,超过一行的之前的内容已经被滚动过去不再显示,保证了界面的干净。(若不加这行,由于这里文本的宽度设为“wrap_content”,导致输入过多内容时,文本框的宽度会随着内容的增加而增加,这显然是不美观的)。
若要获取文本框中的内容,则要先获取控件的引用(凡是要使用某个组件都得这么做) :
editText=(EditText) findViewById(R.id.EditText); //editText为活动的成员变量
String text=editText.getText().toString();
图片(ImageView)
在res文件下有drawable文件夹,用于存放图片图片。但图片等资源在存放的时候,最好按大小放在不同的文件夹里,便于之后适配各种分辨率的手机。
故这里再新建一个文件夹:drawable-xhdpi,将符合720p手机显示规范的图片放入。附上各分辨率对应DPI:
“HVGA mdpi”
“WVGA hdpi ”
“FWVGA hdpi ”
“QHD hdpi ”
“720P xhdpi”
“1080P xxhdpi “
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content" //由于是图片,故大小设置为wrap_content不浪费空间
android:layout_height="wrap_content"
android:src="@drawable/img_1" //通过src属性指定对应的图片
/>
此外,也可以在代码中改变图片指向的资源。假设已获取ImageView的引用。
ImageView.setImageResource(R.drawable.img_2);
进度条(ProgressBar)
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
/>
实际使用中,进度条不会一直存在于界面上,故要根据其他事件的运作来控制进度条的可见状态/属性。
这里假设已获取ProgressBar的引用。控制进度条可见状态的方法:(实际上这个方法可以还作用于其他控件)
progressBar.setVisibility(View.VISIBILE);
可以设置的可见状态包含:View.VISIBILE,View.INVISIBILE,View.GONE。
View.VISIBILE:控件可见。
View.INVISIBILE:控件不可见,但仍占用着屏幕空间,相当于空间透明化了。
View.GONE:控件不可见,且不再占用屏幕空间。
进度条还可以设置为条形风格
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"/> //进度条的进度最大值为100
这里举个例子,每点击一次按钮都会使进度+10,进度条增加1/10。
public class MainActivity extends AppCompatActivity {
private EditText editText;
private ProgressBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt1=(Button) findViewById(R.id.button);
editText=(EditText) findViewById(R.id.EditText);
bar=(ProgressBar) findViewById(R.id.progressbar) ;
bt1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
int progress=bar.getProgress();
bar.setProgress(progress+=10);
}
});
}
}
效果: