鹿泉营销型网站制作价格低,网站快照不更新原因,策划网络营销活动方案,龙华区做网站总结#xff1a;见名知意
TextView#xff1a;
Button:
EditView:
ImageView:
ProgressBar:
ProgressDialog和AlertDialog有些类似#xff0c;都可以再界面弹出对话框#xff0c;都能够屏蔽其他控件的交互能力#xff0c;用法也类似。
我们还发现ProgressDialog和AlertDia…总结见名知意
TextView
Button:
EditView:
ImageView:
ProgressBar:
ProgressDialog和AlertDialog有些类似都可以再界面弹出对话框都能够屏蔽其他控件的交互能力用法也类似。
我们还发现ProgressDialog和AlertDialog不用在activity_layout.xml布局文件中写入直接在MainActivity代码中通过按钮点击事件调用就行。
详细步骤首先新建项目UIWidgetTest项目。假如活动及其对应布局已经创建完毕。TestView
主要用来在界面显示一段文本信息。类似于显示“Hello world”。
修改activity_main.xml中的代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:contextcom.example.uiwidgettest.MainActivity TextViewandroid:idid/text_viewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textThis is TextViewandroid:gravitycenterandroid:textSize24spandroid:textColor#00ff00/
/LinearLayout
我们仅仅增加一个TextView控件还有制定了它的属性。wrap_content表示由控件内容决定控件大小。android:gravity表示来指定文字的对齐方式。Button
我们先不管外面LinearLayout修改activity_main.xml文件来增加一个Button。代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentTextViewandroid:idid/text_viewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textThis is TextViewandroid:gravitycenterandroid:textSize24spandroid:textColor#00ff00/Buttonandroid:idid/buttonandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textButton android:textAllCapsfalse///注意这里Button不完全都是大写但是运行之后会自动转换为大写我们要改变这种默认。/LinearLayout我们可以运行一下。
发现有问题后面的Button并没有显示出来这是因为外面的LinearLayout通过android:orientation指定了排列方式默认情况为horizontal我们需要指定为为vertical。及如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentTextViewandroid:idid/text_viewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textThis is TextViewandroid:gravitycenterandroid:textSize24spandroid:textColor#00ff00/ Buttonandroid:idid/buttonandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textButton //LinearLayout
接下来我们在MainActivity中为Button的点击事件注册一个监听器代码如下
package com.example.uiwidgettest;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button (Button)findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {//逻辑语句}});}
}EditText
程序和用户进行交互允许用户在控件里输入和编辑内容并可以在程序中对这些内容进行处理。
同样修改activity_main.xml文件来增加一个EditText控件代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentTextViewandroid:idid/text_viewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textThis is TextViewandroid:gravitycenterandroid:textSize24spandroid:textColor#00ff00/Buttonandroid:idid/button_1android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textButton1android:textAllCapsfalse/EditTextandroid:idid/edit_textandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hintType something hereandroid:maxLines2//LinearLayout然后我们可以在输入框内显示一些提示性文字一旦用户输入了任何内容提示性文字又会消失。其实我们只要给EditText指定一个android:hint 属性就行了。
然后呢运行之后我们发现可以在EditView内容输入无限多内容界面会不好看我们又可以通过android:maxLines属性来解决这个问题。定义好这个属性我们发现当输入的文本超过两行文本会自动向上翻。
紧接着我们可以结合EditText与Button完成一些功能比如通过点击按钮来获取EditText里面输入的内容。
修改MainActivity里面的内容代码如下
package com.example.uiwidgettest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText editText;//在这里单独定义Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button (Button)findViewById(R.id.button);editText (EditText)findViewById(R.id.edit_text);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button:String inputText editText.getText().toString();Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();break;default:break;}}});}
}
首先通过findViewById()获取EditText的实例然后在按钮的点击事件里调用EditText的getText()方法来获取输入的内容。再调用toString()方法转化为字符串。最后还是使用Toast显示出来。ImageView
这是一个用来显示图片的控件我们知道图片通常放在”drawable”开头的目录下我们发现有很多drawable开头的目录我们选一个drawable-xhdpi的目录将选好的图片img_1.png和img_2.png放入这个目录中。
修改main_activity也就是来说添加一个ImageView控件添加代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent........ ImageViewandroid:idid/image_viewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:srcdrawable/img_1 //LinearLayout我们发现有个android:src属性我想大概是图片的来源吧但是我们明明把图片放在了drawable-xhdpi目录下为什么却写的是drawable目录呢另外我们可以通过代码动态地更改ImageView中的图片修改MainActivity的代码如下
package com.example.uiwidgettest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText editText;//在这里单独定义 private ImageView imageView;//Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button_1 (Button)findViewById(R.id.button_1);Button button_2 (Button)findViewById(R.id.button_2);editText (EditText)findViewById(R.id.edit_text);imageView (ImageView)findViewById(R.id.image_view);button_1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_1:String inputText editText.getText().toString();Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();break;default:break;}}});button_2.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_2:imageView.setImageResource(R.drawable.img_2);break;default:break;}}});}
}
我们可以再添加一个Button2来监听ImageView点击Button2时我们可以从Img_1调转到Img_2。
这里需要注意添加Button2我们需要再写一个监听器。在按钮的监听事件中我们通过调用ImageView的setImageResourece()方法将显示的图片改成Img_2。ProgessBar
这个用于在界面上显示一个进度条表示我们正在加载一些数据我们可以修改activity_main中的代码添加一个ProgessBar,代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent.......Buttonandroid:idid/button_2android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textButton2android:textAllCapsfalse/........ ProgressBarandroid:idid/progress_barandroid:layout_widthmatch_parentandroid:layout_heightwrap_content //LinearLayout运行完程序之后我们发现一直有个圆形进度条正在选装那么如何让进度条在加载完数据后消失呢我们就学习一个新的属性
Android控件的可见属性。可以通过android:visibility进行指定可选值有3种visibleinvisible和gone。visible是表示控件可见的这个是默认值。invisible表示控件不可见但它仍然占据着原来的位置和大小就是透明状态。gone则表示控件不仅不可见而且不占用任何屏幕空间。
我们通过代码来设置控件的可见性使用的是setVisibility()方法可以传入View.VISIBLE、View.INVISIBLE和View.GONE这3种值接下来我们尝试实现点击按钮让进度条消失这里我们再添加一个Button3在activity_main里面添加即可。
修改MainActivity种的代码如下
package com.example.uiwidgettest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText editText;//在这里单独定义private ImageView imageView;private ProgressBar progressBar;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button_1 (Button)findViewById(R.id.button_1);Button button_2 (Button)findViewById(R.id.button_2);Button button_3 (Button)findViewById(R.id.button_3);editText (EditText)findViewById(R.id.edit_text);imageView (ImageView)findViewById(R.id.image_view);progressBar (ProgressBar)findViewById(R.id.progress_bar);button_1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_1:String inputText editText.getText().toString();Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();break;default:break;}}});button_2.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_2:imageView.setImageResource(R.drawable.img_2);break;default:break;}}});button_3.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_3:if(progressBar.getVisibility() view.GONE){progressBar.setVisibility(View.VISIBLE);}else{progressBar.setVisibility(View.GONE);}break;default:break;}}});}
}
我们通过getVisibility()来判断ProgressBar是否可见如何可见就隐形不可见就显示出来。这样我们通过不断点击Button3让进度条在显示和隐藏来回切换。
另外我们可以给ProgressBar指定不同样式可以是圆形进度条通过style属性可以将它指定成水平进度条修改activity_main.xml的代码如下:
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent..........Buttonandroid:idid/button_3android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textButton3android:textAllCapsfalse/ProgressBarandroid:idid/progress_barandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentstyle?android:attr/progressBarStyleHorizontalandroid:max 100//LinearLayout
在指定为水平进度条后我们还可以通过android:max属性给进度条设置一个最大值然后在代码中动态的更改进度条的进度。修改MainActivity中的代码如下
package com.example.uiwidgettest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText editText;//在这里单独定义private ImageView imageView;private ProgressBar progressBar;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button_1 (Button)findViewById(R.id.button_1);Button button_2 (Button)findViewById(R.id.button_2);Button button_3 (Button)findViewById(R.id.button_3);editText (EditText)findViewById(R.id.edit_text);imageView (ImageView)findViewById(R.id.image_view);progressBar (ProgressBar)findViewById(R.id.progress_bar);........button_3.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_3:int progress progressBar.getProgress();progress progress 10;progressBar.setProgress(progress);break;default:break;}}});}
}
这样呢每点一次按钮我们都会获取进度条的当前进度然后在现有的进度条上加10作为更新后的进度。
ParogressBar还有其他几种样式可以试试。AlertDialog
AlertDialog可以在当前界面弹出一个对话框这个对话框是位于所有界面元素之上的能够屏蔽其他控件的交互能力。
修改MainActivity中的代码(我们可以再添加一个Button4)如下
package com.example.uiwidgettest;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText editText;//在这里单独定义private ImageView imageView;private ProgressBar progressBar;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button_1 (Button)findViewById(R.id.button_1);Button button_2 (Button)findViewById(R.id.button_2);Button button_3 (Button)findViewById(R.id.button_3);Button button_4 (Button)findViewById(R.id.button_4);..................button_4.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_4:AlertDialog.Builder dialog new AlertDialog.Builder(MainActivity.this);dialog.setTitle(This is Dialog);dialog.setMessage(Something important.);dialog.setCancelable(false);dialog.setPositiveButton(OK, new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});dialog.setNegativeButton(Cancel, new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});dialog.show();break;default:break;}}});}
}
首先通过AlertDialog.Builder创建一个AlertDialog的实例然后可以为这个对话框设置标题内容可否用Back键关闭对话框等属性接下来调用setPostiviteButton()方法为对话框设置确认按钮的点击事件调用setNegativeButton()方法为对话框设置取消按钮的点击事件。最后将对话框显示出来。ProgressDialog
ProgressDialog和AlertDialog有些类似都可以再界面弹出对话框都能够屏蔽其他控件的交互能力用法也类似。不同的是ProgressDialog会在对话框中显示一个进度条一般用于表示当前操作比较费时需要等待。修改MainActivity中代码如下
package com.example.uiwidgettest;import android.app.ProgressDialog;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private EditText editText;//在这里单独定义private ImageView imageView;private ProgressBar progressBar;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button_1 (Button)findViewById(R.id.button_1);Button button_2 (Button)findViewById(R.id.button_2);Button button_3 (Button)findViewById(R.id.button_3);Button button_4 (Button)findViewById(R.id.button_4);Button button_5 (Button)findViewById(R.id.button_5);editText (EditText)findViewById(R.id.edit_text);imageView (ImageView)findViewById(R.id.image_view);progressBar (ProgressBar)findViewById(R.id.progress_bar);........button_5.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {switch (view.getId()){case R.id.button_5:ProgressDialog progressDialog new ProgressDialog(MainActivity.this);progressDialog.setTitle(This is ProgressDialog!);progressDialog.setMessage(Loading);progressDialog.setCancelable(true);progressDialog.show();break;default:break;}}});}
}
如果在setCancelable()中传入了false,表示ProgressDialog是不能通过Back键取消掉的。程序会陷入死机状态ProgressDialog会一直存在。