文本框组件<TextView>
- 1.创建字符串:在左边,android-demo-res-values-strings.xml 打开 用内容 ,调用:android:text="@string/dome1"
android:textSize=“xxsp”//改变字体大小(sp是字号大小的单位) - 2.常见的代码:
android:textColor=""//改变字体颜色(左边显示颜色点击进去能选择颜色),ARBG是带透明度的,RGB是不带透明度的,下面第一条是调整颜色 下面第二条是调透明度,默认是完全不透明,custom color 显示的是调整后的颜色。#后面是颜色值
android:singleLine="“设置单行文本框(结果用true或者false来设置)
android:maxWidth=”"//设置最大宽度(大小是sp ,宽度是dp)
编辑框<EditText>
常用的代码:
android:hint=""//可编辑提示信息
android:inputType=d"//设置输入类型(textpassword密码框),(number只能输入数字)
android:drawableLeft=“@mipmap/”//在编辑框内绘制图像属性,可以通过图像资源进行指定,在文字的左侧绘制图像
android:drawableStart=“@mipmap/”//在编辑框内绘制图像属性,可以通过图像资源进行指定,在文字的开始处绘制图像
android:drawableBottom=“@mipmap/”//在编辑框内绘制图像属性,可以通过图像资源进行指定,在文字的底部绘制图像
android:drawableRight=“@mipmap/”//在编辑框内绘制图像属性,可以通过图像资源进行指定,在文字的右侧绘制图像
android:drawableEnd=“@mipmap/”//在编辑框内绘制图像属性,可以通过图像资源进行指定,在文字的结束绘制图像
android:drawableTop=“@mipmap/”//在编辑框内绘制图像属性,可以通过图像资源进行指定,在文字的顶部绘制图像
android:drawablePadding//来调整图像和文字之间的距离
android:lines=""//设置编辑框的行数来调整编辑框的宽度
center_vertical//(垂直居中)
android:padding=""//设置内边距
android:scaleType=“fitXY”//可设置与屏幕适应,自动拉伸
代码的使用
- 1.getText();//获取文本的内容,在demo-java-com.-MainActivity中编辑,先设置一个id属性,然后调用文本的id属性进行获取 ,EditText et=(EditText)findViewById(R.id.et1);先获取对象,然后对象.getText();来获取内容
- 2.android:drawableLeft与android:drawableStart的区别:如果文字是从左向右读,则没区别,如果文字是从右向左读,则效果截然相反
普通按钮<Button>
应用:
- 1.按钮文字也是用android:text=""进行编辑
- 2.为按钮添加单击事件监听器
- 3.为按钮设置一个id,以便用id来获取按钮
- 4 常用的代码:
Button button=(Button)findViewById(R.id.按钮的名字)//获取按钮对象
button.setOnClickListener(new View.OnClickListener(){)//设置单击事件监听器(创建一个对象),系统自动重写onClick的方法,在onClick中编写要执行的代码
Toast.makeText().show(); //来创建提示框,第一个()内第一个参数是指定的对象{MainActivity.this}, 第二个参数""编辑文本,第三个参数 “”后面设置消息提示显示的长短[Toast.],调用show方法
public void myClick(View view){}//编写方法,void是没有返回值,指定View类型的参数
android:onClick=""//设置按钮属性,进行调用
为普通按钮添加单击事件监听器的几种常见方法:
- 1.匿名内部类作为单击事件监听器:
Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); - 2.通过判断id与实现implements View.OnClickListener接口
可以通过判断id来进行多个单击事件监听器
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) { //这个是实现OnClickListener接口后强制要求重写的方法
switch (v.getId()){
case R.id.button:
Toast.makeText(this, "钢琴之王", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(this, "Nothing to show", Toast.LENGTH_SHORT).show();
break;
}
}
}
或者是通过按钮对象来绑定单击事件监听器
bt2.setOnClickListener(new MyListener());
- 3.创建一个OnClickListener 的对象:
private View.OnClickListener MyListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
}
};
通过按钮对象来绑定单击事件监听器:
bt2.setOnClickListener(new MyListener());
- 4 利用布局文件中的onClick属性,并在实现文件中实现该方法。注意的是这里的方法名应该和布局文件中onClick属性的方法名相同,该方法必须是public方法。
主程序
public void onButtonClick (View view){
Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();
}
}
在布局文件中的设置
<Button
android:layout_below="@id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:text="Button3"
android:onClick="onButtonClick"/>
图片按钮<ImageButton>
- 1.能够自定义按钮,用图片作为按钮
- 2.android:background="#0000"//设置背景颜色为透明
- 3.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示
单选按钮<RadioButton>
<RadioButton>来添加单选按钮
- android:checked=“true”//设置为默认选中状态
<RadioGroup>用RadioGroup来把单选组件括起来就成了单选组,只能选一个,选多个,前一个就会被取消- 要获取单选按钮组选中项的值,首先先获取单选按钮组,再为它添加选中状态改变监听器,要获取单选按钮组,就要设置id属性
- 1.RadioGroup rg=(RadioGroup)findViewById(R.id.radiogroup1);//获取单选按钮组
2.rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){//添加选中状态改变监听器 ,系统会自动重写方法,在重写方法中编写代码{public void onCheckedChanged(RadioGroup group,int checkedId){}}
checkedId//获取被选中的按钮
- 1.RadioButton r=(RadioButton)findViewById(checkedId)//定义一个对象,用findViewById来获取RadioButton的对象
2.r.getText();//用对象.方法来获取值
- 用for循环来遍历内容。getChildCount是当前单选按钮组包括几个单选按钮
- 如果局部变量不行,就定义一个全局变量
- RadioButton r=(RadioButton)rg.getChildAt(i)//通过方法来获取单选按钮
- 1.if(r.isChecked()){}//if语句来判断单选按钮是否被选中
2.break因为只要检测到一个被选中就完成任务,就退出
- 1.if(radioButton.getText().equals(“B:100”)){}//判断单选按钮的值是否等于正确值
2.else//对不正确的情况进行处理
- 1.AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);//new一个发送文本的对象
2.builder.setMessage("")//对象.方法来设置发送文本
3.builder.setPositiveButton("",nullk).show()😕/对象.方法来设置确定按钮,.show方法来显示消息提示框
复选框<CheckBox>
- 1.布局宽度和布局宽度选择包括其自身内容(wrap_content)
- 2.为复选框添加选中状态改变事件监听器:
部件 名称;//添加全局变量{CheckBox like1}
就可以用名称来代替部件来获取和添加状态改变事件监听器
like1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()){
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){}//创建复选框状态改变事件监听器
- 3.常见的代码
if(like1.isChecked()){//判断 如果复选框被选中
like1.getText();//获取复选框中的值
android:checked=“ture”//设置复选框默认为选中状态
android:textSize=""//调整文字大小
String checked=’’//定义一个变量 ,数值为空
checked+=checkBox1.getText().toString();将复选框中的获取值赋值给变量,再转换成String类型的
日期选择器<DatePicker>
- 1.常用的代码:android:layout_width=“match_parent”//布局宽度选择与父容器相同
android:layout_height=“match_parent”//布局高度选择与父容器相同
DatePicker datePicker;//定义一个日期选择器
获取日期选择器//datePicker=(DatePicker)findViewById(R.id.datepicker);
Calendar calendar=Calendar.getInstance();//定义一个日期对象并获取
year=calendar.get(Calendar.YEAR);//获取到年的数值赋值给定义的年的变量
month=calendar.get(Calendar.MONTH);//获取到月的数值赋值给定义的月的变量
day=calendar.get(Calendar.DAY_OF_MONTH);//获取到日的数值赋值给定义的日的变量
datePicker.init(year,month,day,new DatePicker.OnDateChangedListener(){)//初始化日期选择器,因刚调用出来默认的是选择当前日期,因为datePicker是DatePicer类的对象,需要传入三个参数初始化(调用DatePicker的init方法)来获取当前的时间,系统会重写方法{public void onDateChanged(DatePicker view,int year,int monthOfYear,int dayOfMonth)}
MainActivity.this.year=year;//将获取的年赋值给系统的年
MainAtivity.this.moth=mothOfYear;//将获取的月赋值给系统的月
MainActivity.this.day=dayOfMonth;//将获取的日赋值给系统的日
private void show(int year,int month,int day){
string str=year+“年”+(month+1)+“月”+day+“日”; }//设置show方法来输出返回值,因为数字都是从0开始,所以要符合要求要+1
show(year,monthOfYear,dayOfMonth);//调用show方法显示信息
public class MainActivity extends Activity如果日期选择器只有部分显示就导入Activity包,在MainActivity中 继承Activity
- 2.注意事项:
MainActivity.this的意思是调用外部类的属性,如,当内部类里面有和外部类同名属性时,调用的是内部类的属性,使用外部类.this就可以调用外部类的属性了
int year,month,day先定义三个变量,年月日
时间选择器<TimePicker>
- 1.
<TimePicker>进行添加 - 2.TiimePicker tp=(TimePicker)findViewById(R.id.timepicker);//程序获取布局管理器中的时间选择器
tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){
}//设置时间改变监听器,安卓会自动重写方法,在重写方法中编写代码
tp.setIs24HourView(true);//将系统默认12进制计时改为24进制计时
- 3.String str =hourOfDay+“时”+minute+“分”//将获取到的hourOfDay minute赋值给str,方便用str进行输出
计时器<Chronometer>
<Chronometer>标记进行添加
布局高度和布局宽度都是包括其自身内容(wrap_content)
代码
- 1.android:format=""//可设置其他样式,可添加文字,%s可设置十分秒的时间
- 2.setBase()//设置计时器的起始时间
- 3.setFormat//设置显示时间的格式
- 4对象.start()//指定开始计时
- 5对象.stop()//指定停止计时
- 6.setOnChronometerTickListener()//为计时器绑定事件监听器,当计时器改变时触发该监听器,()内的内容是new Chronometer.OnChronometerTickListener(){, 在重写的方法里编辑
计时器组件继承与文本框组件,文本框组件能用的,计时器组件一样能用 - 7.Chronometer ch;//定义一个计时器的对象
ch=(Chronometer)findViewById(R.id.chronometer)//获取布局文件中添加的计时器
- 8.SystemClock.elapsedRealtime()//获取系统时间
- 9.if(SystemClock.elapsedRealtime()-ch.getBase()>=60000)//与易语言计时器一样,判断是否达到60s,计时器的真实时间-起始时间
进度条<ProgressBar>
<ProgressBar>进行标记
应用
- 1.布局宽度是与父容器相同,布局高度是包裹其自身内容
- 2.用进度条可以显示程序运行情况
- 3.要配合handle来更新ui
代码
- 1.android:attr/progressBarStyleHorizontal//为细水平长条进度条
- 2.android:attr/progressBarStyleSmall//为小型圆形进度条
- 3.android:attr/progressBarStyleLarge//为大型圆形进度条
- 4.android:style/Widget.ProgressBar.Horizontal//粗水平长条进度条
- 5.android:style/Widget.ProgressBar.Large//旋转画面的大圆形进度条
- 6.android:style/Widget.ProgressBar.Small//旋转画面的小圆形进度条
- 7.android:max=""//设置最大值的属性
- 8.android:progress=""//设置当前进度
- 9.style="" //设置进度条的样式,通过主题来改变进度条的样式,在“”中编写需要的样式
- 10.private ProgressBar progressBar;//声明进度条的对象,未初始化
- 11.private int mProgress=0:定义初始进度条
- 12.private Handler mHandler//定义一个用于处理消息的对象,使用前先导入android.os.Handler的包
- 13.progressBar=(ProgressBar)findViewById(R.id.progressBar);//获取进度条
- 14.mHandler=new Handler(){}//实例化处理消息的handler,安卓不支持在主线程更新UI组件,用handler来更新UI组件
重写方法:在MainActivity.java中右键-Generate-Override Methods,选择要重写的handleMessage(msg:Message):void-ok
判断耗时操作是否完成,如果没有完成就更新进度,否则进度条不显示
new Thread(new Runnable()){//创建线程,系统会自动重写run方法,在run方法中编写
-
15.while(true){}//在while循环中实时获取进度条的百分比,直到耗时操作结束
-
16.mProgress=doWork();//将耗时操作赋值给进度条
-
17.Message m=new Message();//创建并实例化一个对象,用于更新进度条的进度
-
19.if(mProgress<100){}//判断进度是否完成,如果耗时操作小于100,证明没有完成
-
20.m.what=0x111//创建消息代码,产生提示的效果,自定义的消息代码,通过它可以区分消息,来进行不同的处理,表示耗时操作未完成
-
21.mHandler.sendMessage(m);//发送一个消息,对象.方法来实现,参数是定义的message对象m
-
22.else{}//若其他情况,执行的操作
-
23.m.what=0x110//创建不同的消息代码,以便区分,表示耗时操作已经完成
-
24.break;//来退出循环
-
25.start();//来开启线程
-
26.private int doWork(){}//私有的返回值是整形,实例化doWork(){}方法
-
27.mProgress+=Math.random()*10;//生产随机数是想随机产生一个初始化进度数值就是开始进度为多少是随机出来的,不一定从0开始
-
28.Thread.sleep(200);//让线程休眠200毫秒。使其增长有个间隔
-
29.return mProgress;//返回进度
-
30.if(msg.what0x111){}//用消息代码来判断进度条是否完成,一个=为赋值,两个为相等
-
31.progressBar.setProgress(mProgress);//进度条更新
-
32.progressBar.setVisibility(View.GONE);设置取消设置进度条
拖动条<SeekBar>
应用
- 1.拖动条是进度条的子类
- 2.
<SeekBar>进行添加 - 3.布局宽度是与父容器相同。布局高度是包裹其自身内容
- 4.实现拖动的时候,对其内容进行实时改变
代码
-
1.android:thumb="@drawablee/"//设置拖动条拖动的图标
-
2.SeekBar seekBar=(SeekBar)findViewById(R.id.seekbar)//定义对象并获取拖动条
-
3.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener());//创建进度条 改变监听器,在重写的方法中编写,onProgressChanged是进度改变时的方法, .onStartTrackingTouch是开始触摸时所执行的方法,onStopTrackingTouch是停止触摸时执行的方法,progress就是进度的值
-
4.private SeekBar seekBar;先定义拖动条的对象
-
5.private ImageView image;定义图片的对象
-
6.image=(ImageView)findViewById(R.id.image)//再根据对象来获取图片
-
7.seekBar=(SeekBar)findViewById(R.id.seekbar)//再根据对象来获取拖动条
-
8.Image.setImageAlpha(progress);//设置图片的透明度,参数为拖动条的进度
星级评分条<RatingBar>
代码
- 1.android:numStars=""//可设置星的数量
- 2.android:rating=""//默认点亮星的数量
- 3.android:stepSize=""//设置每次点亮的数量级是一
- 4.android:islndicator=“true”//能设置只能观看不能修改
- 5.RatingBar rb=(RatingBar)findViewById(R.id.ratingbar)//定义星级评分条的对象并获取
- 6.String rating= String.valueOf(rb.getRating());//获取他评价几颗星,强制类型转换.转化为字符串的类型
- 7.String stepSize=String.valueOf(rb.getStepSize());//获取每次要改变几个星,,强制类型转换.转化为字符串的类型
- 8.String progress=String.valueOf(rb.getProgress());//定义并获取进度,转化为字符串类型
- 9.private RatingBar ratingBar;定义一个私有的全局变量
- 10.float rating=ratingBar.getRating();//获取到的星级数再赋值给rating
应用
- 1.
<RatingBar>进行添加 - 2.布局宽度和布局高度都是包裹其自身内容
图像视图<ImageView>
代码
- 1.android:src="@drawable/" //插入图片
- 2.android:scaleType=""//修改缩放方式,fitXY是横向和纵向独立缩放,按ctrl+ait+空格能查看所有能运用的参数 center是图片放在中间不进行缩放。centerCrop是保持纵横比来缩放图片,使图片更好覆盖ImageView。fitCenter也是保持纵横比进行缩放,图片位于ImageView的中央。fitCenter位于ImageView的底部。fitStart位于ImageView的顶部。matrix以矩阵的方式对图片进行缩放
- 3.android:adjustViewBounds=“true”//是否能调整自己的边界来保持自己所显示图片的长宽比吗,设置为true就能设置图像的最大宽度和最大高度
- 4.android:maxWidth=""//设置图像的最大宽度
- 5.android:maxHeight=""//设置图像的最大高度
- 6.android:tint=""//可对图像进行着色
应用
- 1.
<ImageView>标记进行添加 - 2.布局高度和布局宽度都是包裹其自身内容
- 2.将图片放置在res drawable 中方便添加
图像切换器<ImageSwitcher>
应用
- 1.布局高度和宽度都是与父容器相同
- 2.在res-anim导入场景切换的动画
- 3.在项目res目录下创建slide_in_right.xml和slide_out_left.xml文件,在platforms\android-版本\data\res\anim\下找到下面两个xml文件,复制里面的内容就行了。android.R.anim_slide_in_right和andorid.R.anim.slide_out_left是私有的,也就是说通过.属性时找不到的,另外2个文件可以用的,记得用android.R.anim.xxx形式调用就行
- 4.错误日志:java.lang.ArrayIndesOutOfBoundsException://数组的长度越界,数组的最大下标是数组的长度-1
代码
- 1.ImageSwitcher is=(ImageSwitcher)findViewById(R.id.imageswitcher)//定义一个对象并获取布局管理器中的图像切换器(通过id来识别)
- 2.is.setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this,android.R.anim.fade_out));//对象.方法设置淡出效果
- 4.is.setInAnimation(AnimationUtils.loadAnimation(MainActivity.this,android.R.anim.fade_In));//对象.方法设置淡入效果
- 5.is.setFactory(new ViewSwitcher.ViewFactory(){})//设置视图工厂,在重写方法中编写
- 6.ImageView imageView=new ImageView(MainActivity.this);//实例化imageview,imageview为图像切换器指定图像
- 7.imageView.setImageResource(R.drawable.img01);为imageview指定一张加载的图片,如果图片过多可通过数组才表示
- 8.return imageView//然后进行返回
- 9.is.setOnClickListener(new View.OnClickListener(){})//为图像切换器设置单击事件监听器,在重写的方法里面编写
- 10.((ImageSwitcher)v).setImageResource(R.drawable.img02);//强制类型转换,设置点击后切换的另一张图片的资源
- 11.private int[] arrayPiccture=new int[]{R.drawable.}//声明并初始化一个保存显示图像的数组,最后的{}中导入图片
- 12.private int index;//定义一个整形的变量,它用于记录要显示的这个图片在图片数组中的索引
- 13.private float touchDownX;//声明一个对象,来储存手指按下的x坐标
- 14.private float touchUpX;//设置一个对象,来储存手指按抬起的x坐标
没赋值,默认为0 - 15.touchDownX=event.getX();//将获取左右滑动按下时的x坐标赋值给储存手指按下的x坐标的变量touchDownX
- 16.if(event.getAction()=MotionEvent.ACTION_DOWN){}判断动作,如果动作为按下
- 17.else if(event.getAction()==MotionEvent.ACTION_UP){}//又判断,如果是手指抬起时
- 18.touchUPX=event.getX();//将获取左右滑动抬起时的x坐标赋值给储存手指按下的x坐标的变量touchUPX
- 19.if(touchUpX-touchDownX>100){}判断手指是否是从左向右进行滑动
- 20.设置当前要显示图片的索引,如果当前的图片是第一张图片的话,让它的索引等于最后一张的索引,否则把当前图片的索引-1
index=index=
=0?arrayPicture.length-1:index-1;//判断是否等于第一张索引,如果等于,就设置数组的长度-1(最后一张图片的索引) - 21.imageSwitcher.setInAnimation(AnimationUtils.loadAnimmation(MainaActivity.this,R.anim.))//设置场景切换动画
- 22.imageSwitcher.setImageResource(arrayPicture[index]);//设置场景切换需要用到的图片,图片用数组表示
- 22.else if(touchDownX-touchUpX>100){}//通过另一种情况判断,如果是从右向左进行滑动
- 23.index=index==arrayPicture.length-1?//判断当前索引值是否等于数组的长度
- 24.0:index+1//否则索引+1
网格视图<GridView>
应用
- 1.标记进行添加
- 2.布局高度和宽度都是与父容器相同
- 3.适配器:连接后端数据和前端显示的接口,是数据和ui界面的纽带
- 4.适配器不是在布局管理器中设置适配器,在左侧res-layout 中单击鼠标右键,-new-layout resource file 设置file name -ok
- 5.设置保持要显示图片的this对象,导入要显示的图片。导入到res-drawable-mdpi
- 6.在getView中创建新的imageview,用来显示图片,并且将图片通过适配器加载到新的imageview中
代码
-
1.android:numColumns=""//设置列数
-
2.ArrayAdapter//数组适配器,将数组的多个值包装成多个列表项,只能显示一行文字
-
3.SmipleAdapter//简单适配器,将this集合的多个值包装成多个列表项,可以自定义成各种效果
-
4.SmipleCursorAdapter//将数据库的内容通过列表的形式展现出来
-
5.BaseAdapter//对各个列表项进行最大限度的定制,具有很高的灵活性
-
7.private int[] picture=new int[]{}设置数组,记录资源的ID,实例化并复制
-
8.GridView gridView=(GridView)findViewById(R.id.);//获取到GridView
-
9.List<Map<类型,值的类型>>对象名称 listitem=new ArrayList<Map<类型,值的类型>>(); //创建List对象,它的列表项是map对象,是通过键值对保存的图像资源,并实例化,要导入map类,导入ArrayList类,导入List
-
10.for(int i=0;i<picture.length;i++){}//通过for循环把map对象添加到List当中
-
11.Map<String,Object> map=new HashMap<String,Object>();定义一个map对象,名称为map,并初始化
-
12.map.put(“image0”,数组);//将图片资源ID保存到map对象中
-
13.listitem.add(map);将map对象添加到list当中
-
14.SimpleAdapter simpleAdapter=new SimpleAdapter(this,listitem,R.layout.cell,new String[]{“image”},new int[]{R.id.image})//R.layout.cell指定一个布局文件,来控制图片的的显示,字符串数组
-
15.new int[]{R.id.image}//初始化数组,指定一个整型的数组,在数组中指定布局文件中所定义的组件id
-
16.gridView.setAdapter(simpleAdapter);//为网格视图设置适配器
-
17.android:numColumns=“auto_fit”//设置为自动排列
-
18.android:verticalSpacing=""//设置垂直间距
-
19.android:columnWidth=""//设置列宽度
-
20.public class ImageAdapter extends BaseAdapter{}//创建类并继承
-
21.在要重写的方法中按alt+回车-Implement methods(实现方法)来快速重写方法-ok
-
22.private Context mContext//定义一个私有的上下文对象,名称为mContext
-
23.public ImageAdapter(Context c){}//编写一个构造方法,参数为上下文对象
-
24.mContext=c;//为上下文对象进行赋值
-
25.return picture.length在getCount方法中返回图片的长度
-
26.ImageView imageview//实例化imageview,名称是imageView
-
27.if(convertView==null){}//通过if语句判断传过来的值是否为空
-
28.imageView=new ImageView(mContext);//创建一个imageview组件,参数为上下文对象
-
29.imageView.setLayoutParams(new GridView.LayoutParams(100,90));//设置imageview的宽和高
-
30.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//设置图片的缩放方式,保持纵横比进行缩放,完全覆盖住imageview
-
31.else{imageView=(ImageView)convertView;}//如果传过来的值不为空,就传递convertview的值,需要进行强制类型转换
-
32.imageView.setImageResource(picture[position]);//将获取到的图片,放置到imageview组件中,参数是图片的位置
-
33.return imageView;//返回imageview值
-
34.GridView gridView=(GridView)findViewById(R.id.gridview);//获取布局管理器中的gridview
-
35.gridView.setAdapter(new ImageAdapter(this));//为gridview设置适配器
-
36.android:theme="@style/Theme.AppCompat.Light.DarkActionBar"//为了更类似qq相册,设置主题
列表视图<ListView>
应用
- 1.
<ListView>标记进行添加 - 2.布局宽度是与父容器相同,布局高度是包裹其自身内容
- 3.与下拉列表框一样,都可以创建数组资源和用适配器,然后进行调用,方法一样
- 4.左侧-manifests-AndroidManifest.xml-android:theme="@style/Theme.AppCompat.Light.DarActionBar"//修改成浅色背景的深色ActionBar主题
代码
- 1.android.R.layout.simple_list_item_//列表视图的样式
- 2.ListView listView=(ListView)findViewById(R.id.listview)//获取布局管理器中的列表视图
- 3.listView.setAdapter(adapter);//将适配器与列表视图关联起来,设置适配器的方式设置列表项
- 4.for(int i=0;i<imageid.length;i++){}//通过for循环把图像的ID和列表项的文字放到map对象当中
- 5.Map<String,Object>map=new HashMap<String,Object>();//定义一个map对象,并初始化
- 6.map.put(“image”,imageid[i]);//把图片ID保存到map对象中,第一个参数是键,第二个参数是值(用数组来表示)
- 7.map.put(“name”,title[i]);//将列表项的文字保存到map对象中
- 8.listitem.add(map);//把map对象保存到listitem当中
- 9.SimpleAdapter adapter=new SimpleAdapter(this,listitem,R.layout.main,new String[]{“name”,“image”},new String[]{“name”,“image”})//this:上下文对象;listitem:要显示的对象;R.layout.main:指定每个列表项的布局文件(我们编写的文件);new String[]{“name”,“image”}:map中定义的两个键;new int[]{R.id.title,R.id.image}:指定布局文件定义的id 通过整形数组来指定 第一个参数是R.id.title 第二个参数是R.id.image
- 10.listView.setOnItemClickListener(new AdapterView.OnIteMClickListener(){}//设置监听器,来获取选中项的值,在重写方法中输入
- 11.Map<String,Object>map=(Map<String,Object>)parent.getIremAtPosition(positon);创建一个对象,获取item的位置再赋值给map
- 12.Toast.makeText(MainActivity.this,map.get(“name”).toString(),Toast.LENGTH_LONG)//通过消息提示来显示。通过get(“name”)来获取名称,toString:转化为字符串类型得;LENGTH_LONG:设置为长时间的
下拉列表框<Spinner>
应用
- 1.
<Spinner>标记进行添加 - 2.布局高度和布局高度都是包裹其自身内容
- 3.在左边values-new-XML-values XML File//创建数组资源,名称为arrays,在里面编辑
- 4.通过适配器来指定下拉列表框
代码
- 1.
<string-array name="ctype">//设置字符串数组 - 2.
<item>全部</item> <item>电影</item>//设置各个数组的元素 - 3.android:entries="@array/ctype"//调用新建的数组资源,调用的数组名称为ctype,添加下拉列表框资源
- 4.String[] ctype=new String[]{“全部”,“美术”,“音乐”,“体育”}//创建一个数组,并为数组初始化赋值
- 5.ArrayAdapteradapter=new ArrayAdapter(this,android.R.layout.simple_spinner_item,ctype);//上下文对象【this】,列表项的样式【android.R.layout.simple_spinner_item,自定义数组:要显示的文字【ctype】),创建一个数组适配器,并初始化
- 6.adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//为适配器设置列表框下拉时的选项样式
- 7.Spinner spinner=(Spinner)findViewById(R.id.spinner);//创建下拉列表框的对象并获取布局管理器里面的下拉列表框
- 8.spinner.setAdapter(adapter);//将适配器与下拉列表框关联起来
- 9.spinner.getSelectedItem().toString();//获取下拉列表框的选中值
- 10.String str=spinner.getSelectedItem().toString();//获取下拉列表框的选中值转化为字符串类型并保存
- 11.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){})//添加选择列表项事件监听器,在重写的方法中进行编辑
- 12.String result=parent.getItemAtPosition(position).toString();//根据当前选中项的索引位置来获取选中项的值,然后赋值给result,tostring()是转化为字符串类型
滚动视图<ScrollView>
应用
- 1.
<ScrollView>标记进行添加 - 2.布局宽度是与父容器相同,布局高度是包裹其自身内容
- 3.HorizontalScrollView//设置水平方向上的滚动,设置布局宽度是包裹其自身内容,布局高度是与父容器相同
- 4.在一个滚动视图中只能放置一个组件,若要使用多个,就要用布局管理器把组件括起来
- 5.在java文件中设置滚动视图:①使用构造方法ScrollView(Context c)创建一个滚动视图②addView()方法添加组件到滚动视图中③将滚动视图添加到布局管理器中
- 6.先设置线性布局管理器,再设置id属性,然后在xml中设置要显示的文字
- 7.添加的第二个布局管理器添加图像视图和文本框组件
代码
- 1.LinearLayout 11=(LinearLayout)findViewById(R.id.11);获取线性布局管理器
- 2.LinearLayout 112=new LinearLayout(MainActivity.this);//new一个对象,然后参数是上下文内容(Mainactivity.this);
- 3.112.setOrientation(LinearLayout.VERTICAL);//对象.方法来设置垂直的线性布局管理器
- 4.ScrollView scrollView=new ScrollView(MainActivity.this);//创建一个滚动视图对象,参数是上下文内容(mainactivity.this)
- 5.11.addView(scrollView);//对象.方法把滚动视图添加到布局管理器当中
- 6.scrollView.addView(112);//对象.方法添加的布局管理器添加到滚动视图当中
- 7.ImageView imageView=new ImageView(MainActivity.this);//new图像视图的对象并实例化,参数是上下文对象
- 8.imageView.setImageResource(R.drawable.cidian);//设置要显示的资源
- 9.112.addVieew(imageView);//将另一个线性布局管理器与图像视图关联起来
- 10.TextView textView=new TextView(MainActivity.this);//创建文本框组件对象并初始化,参数是上下文内容
- 11.textView.setText(R.string.cidian);//设置文本框组件要显示的文本
- 12.112.addView(textView);//将文本框组件添加到线性布局管理器中
选项卡
应用
- 1.①在布局文件中添加TabHost TabWidget和TabContent组件②编写各标签页的XML布局文件(选项卡有几个标签页就要编写几个布局文件)③获取并初始化TabHost组件④为TabHost对象添加标签页
- 2.在布局文件中(activity_main.xml)修改-TabHost xmlns:andorid=“http://schemas.android.com/apk/res/android”
- 3.android:id="@andorid:id/tabhost"//设置ID属性名称不能随意设置,要设置android为我们提供的
- 4.使用线性布局管理器()把两个组件括起来,布局高度和布局宽度都是与父容器相同
- 5.
<TabWidget>标记,类似标题的作用,布局宽度是与父容器相同,布局高度是包裹其自身内容,使用安卓为我们预定好的ID:android:id="@android:id/tabs" - 6.
<FrameLayout>使用帧布局管理器,类似内容的作用,设置id属性:android:id="@andorid:id/tabcontent" - 7.在xml文件中设置id属性 布局高度和布局宽度都是与父容器相同,垂直的排列,设置图像视图:布局高度和布局宽度都是与父容器相同,导入图片,另一个xml文件亦然
- 8.在主程序(MainActivity.jajva)中初始化组件
用findViewById来获取TabHost组件
代码
- 1.tabHost.setup();//对tabHost进行初始化
- 2.LayoutInflater inflater=LayoutInflater.from(this);//创建LayoutInflater对象
- 3.inflater.inflate(R.layout.tab1,tabHost.getTabContentView());//LayoutInflater加载第一个标签页的布局文件,R.layout.tab1:第一个xml文件
- 4.inflater.inflate(R.layout.tab2,tabHost.getTabContentView());//LayoutInflater加载第二个标签页的布局文件,R.layout.tab2:第二个xml文件
- 5.tabHost.addTab(tabHost.newTabSpec(“tab1”.setIndicator(“精选表情”).setContent(R.id.left)) //添加第一个标签页,第一个“”是调用第一个标签页,第二个“”是设置要显示的文字,setContent(R.id.left):设置要显示的内容(布局管理器),第二个标签页也是同样操作
经验
- 1.markdown 代码的···最好在最左边,并留一行给他,上下最好对齐,否则不能识别
- 2.分割线不能留空格,否则分割线就不能完全切割
- 3.效率大于美观
- 4.home键的作用是将光标移动到编辑窗口或非编辑窗口的第一行的第一个字上;
- 5.用代码解释知识点应该是整个项目,而不是单条代码
参考
Android中drawableStart和drawableLeft的区别
[页面键控点击]实现implements View.OnClickListener接口
android开发中监听器的三种实现方法(OnClickListener)
本文深入讲解Android中的多种UI组件,包括TextView、EditText、Button、RadioButton、CheckBox、DatePicker、TimePicker等,涵盖创建、属性设置及事件监听器的使用,适合初学者及开发者快速掌握Android界面设计。
5630

被折叠的 条评论
为什么被折叠?



