Android学习笔记(三)----ImageView,ListView,GridView,ScrollView & HorizontalScrollView

继续…

(2-7)ImageView

在这里插入图片描述

1.常用属性

					scaleType
  • fitXY:填满控件,宽高比可能会发生改变
  • fitCenter:保持宽高比缩放,直至能够完全显示
  • centerCrop:保持宽高比缩放,直至能够完全填满控件,会发生裁剪

2.加载网络图片

需要利用Activity里的代码来实现,同时需要用到github库里的glide.jar包
在这里插入图片描述
具体下载方法,自行百度
然后代码如下:

mIv4 = findViewById(R.id.iv_4);
Glide.with(this).load("https://www.baidu.com/img/bd_logo1.png?where=super").into(mIv4);

load()里面写任意图片的url,由于用到了网络连接,所以需要在AndroidManifest.xml里添加访问网络的权限

<uses-permission android:name="android.permission.INTERNET"/>

效果如下:
在这里插入图片描述

(2-8)ListView

在这里插入图片描述

2.Adapter接口

首先来了解手动建立Activity和布局文件,在listview包里创建ListViewActivity.java文件,之后在AndroidManifest.xml中声明

<activity android:name=".listview.ListViewActivity"></activity>

然后再创建ListViewActivity的布局文件,activity_listview.xml,在该文件里面添加ListView控件
回到ListViewActivity文件

private ListView mLv1;

protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listview);

        mLv1 = findViewById(R.id.lv_1);
        mLv1.setAdapter();	//Adapter是连接后端数据和前端显示的适配器接口
}

再创建一个MyListAdapter文件,用来实现Adapter接口的方法,其中有

public int getCount();
public Object getItem(int position);
public long getItemId(int position);
//采用了优化模式,通过convertView+ViewHolder来实现,ViewHolder就是一个静态类,使用 ViewHolder 的关键好处是缓存了显示数据的视图(View),加快了 UI 的响应速度。
public View getView(int position, View convertView, ViewGroup parent){
	ViewHolder holder = null;
        if (convertView == null) {
            convertView = mLayoutInflater.inflate(R.layout.layout_list_item, null);
            holder = new ViewHolder();
            holder.imageView = convertView.findViewById(R.id.iv);
            holder.tvTitle = convertView.findViewById(R.id.tv_title);
            holder.tvTime = convertView.findViewById(R.id.tv_time);
            holder.tvContent = convertView.findViewById(R.id.tv_content);
            convertView.setTag(holder);	//setTag把查找的view缓存起来方便多次重用
        }else {
            holder = (ViewHolder) convertView.getTag();
        }
        //给控件赋值,直接通过holder获取下面三个子控件,不必使用findviewbyid,加快了 UI 的响应速度
        holder.tvTitle.setText("这是标题");
        holder.tvTime.setText("2088-08-08");
        holder.tvContent.setText("这是内容");
        Glide.with(mContext).load("https://www.baidu.com/img/bd_logo1.png?where=super").into(holder.imageView);
        return convertView;
}
//创建一个静态ViewHolder类,ViewHolder模式通过getView()方法返回的视图的标签(Tag)中存储一个数据结构,这个数据结构包含了指向我们要绑定数据的视图的引用,从而避免每次调用getView()的时候调用findViewById())
static class ViewHolder{
        public ImageView imageView;
        public TextView tvTitle,tvTime,tvContent;
}

ListView控件也可以实现按压变色,通过添加selector实现

  • state_focused:是否处于聚焦(获取焦点)状态,一个窗口只能有一个视图获得焦点,一般由用户交互导致,无需应用程序直接改变
  • state_pressed:是否处于被按下状态,由用户导致(触摸操作)
  • state_selected:是否处于被选择状态,程序可调用setSelected()改变其状态

(2-9)GridView

在这里插入图片描述

extends AppCompatActivity		//会默认添加标题栏,是Activity的子类
extends Activity

1.常用属性

android:numColumns="3"	//用于设置一行显示多少item
android:horizontalSpacing="10dp"	//设置item之间的水平间距
android:verticalSpacing="10dp"		//设置item之间的垂直间距

2.Adapter接口

同上面ListView的一样,通过convertView+ViewHolder来实现

3.点击事件

	private GridView mGv;


	mGv = findViewById(R.id.gv);
   	mGv.setAdapter(new MyGridViewAdapter(GrideViewActivity.this));
   	//设置点击事件监听器
	mGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(GrideViewActivity.this, "点击 pos"+position,Toast.LENGTH_SHORT).show();
            }
        });
        //设置长按事件监听器
        mGv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(GrideViewActivity.this, "长按 pos"+position, Toast.LENGTH_SHORT).show();
                return true;
            }
        });

注意长按事件监听器里的返回值为true,表示长按监听只执行长按监听中执行的代码,若为false,还会继续响应其他监听中的事件。
为false时,比如你长按pos=0的item,先提示"长按 pos0",当你松开后,继续提示"点击 pos0",
为true时,长按时会提示"长按 pos0",松开时并不会提示其他事件监听器的消息

(2-10) 滚动视图ScrollView & HorizontalScrollView

1.垂直滚动视图ScrollView

使用方法如下:其子控件只能是一个

<ScrollView
	<
		<>
		<>
		<>
	>
</ScrollView>

2.水平滚动视图HorizontalScrollView

同ScrollView一样

发布了38 篇原创文章 · 获赞 6 · 访问量 3422

猜你喜欢

转载自blog.csdn.net/qq_37704124/article/details/84257540