图片常用的控件
常用的图片控件
ImageView
android:contentDescription 对图片进行描述
android:scaleType fitXY 匹配X轴和Y轴
最常用的方法:
imageview.setImageResource 设置图片资源
使用的时候尽量不要使用大量的高清的图片,
手机的性能没电脑强大,过多的使用,会出现,
outofmemory的错误
ImageButton
相对于ImageView来说在周围会出现边框,让人看起来就是按钮的感觉
支持android;scaleType
如果想要使用自己定义的ImageButton可以设置一下,android:background="@/null"
两者功能上作用一样,但是为了规范一下,分开来写
imageButton其实就是一个ImageView
如果不喜欢Imageutton的边框,可以按以上设置
两者都可以设置监听器
如果显示图片,使用Imageview,如果响应时间,使用ImageButton
ImageSwitcher
其实是一种选择器
用于切换显示图片的控件
反复的调用ImageView的SetImageXXX()方法就可以实现图片的切换
使用ImageView切换显示图片的本质是在
同一个控件中设置不同的图片,而ImageSwitcher的本质是一种ViewGroup,包含2
个子级ImageView,其切换本质是ImageView
在使用ImageSwitcher时,需要为它添加2个子级的ImageView控件,且应该通过ViewSwitcher.ViewFactory
主Activity,用来显示浏览的界面:
跳转以后的界面,能够单独显示一张图片,能够上下页切换:
布局,浏览所有图片的布局:
每张图片布局item.xml:
跳转以后显示一张图片的界面:
ImageView
android:contentDescription 对图片进行描述
android:scaleType fitXY 匹配X轴和Y轴
最常用的方法:
imageview.setImageResource 设置图片资源
使用的时候尽量不要使用大量的高清的图片,
手机的性能没电脑强大,过多的使用,会出现,
outofmemory的错误
ImageButton
相对于ImageView来说在周围会出现边框,让人看起来就是按钮的感觉
支持android;scaleType
如果想要使用自己定义的ImageButton可以设置一下,android:background="@/null"
两者功能上作用一样,但是为了规范一下,分开来写
imageButton其实就是一个ImageView
如果不喜欢Imageutton的边框,可以按以上设置
两者都可以设置监听器
如果显示图片,使用Imageview,如果响应时间,使用ImageButton
ImageSwitcher
其实是一种选择器
用于切换显示图片的控件
反复的调用ImageView的SetImageXXX()方法就可以实现图片的切换
使用ImageView切换显示图片的本质是在
同一个控件中设置不同的图片,而ImageSwitcher的本质是一种ViewGroup,包含2
个子级ImageView,其切换本质是ImageView
在使用ImageSwitcher时,需要为它添加2个子级的ImageView控件,且应该通过ViewSwitcher.ViewFactory
接口的实现类对象完成子级ImageView的添加
ImageSwitcher实现的类似于安卓手机自带图库的小案例:
适配器:
package com.edu.cn.image;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
public class ImageViewGridAdapter extends BaseAdapter {
private Context context;
private List<Integer>data;
public ImageViewGridAdapter(Context context, List<Integer> data) {
super();
this.context = context;
setData(data);
}
public void setData(List<Integer> data){
if(data == null){
data = new ArrayList<Integer>();
}
this.data = data;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.data.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.grid_item, null);
holder.image = (ImageView)convertView.findViewById(R.id.item_grid);
convertView.setTag(holder);
}else{
holder =(ViewHolder) convertView.getTag();
}
holder.image.setImageResource(data.get(position));
return convertView;
}
private class ViewHolder{
ImageView image;
}
}
主Activity,用来显示浏览的界面:
package com.edu.cn.image;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.MainThread;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
public class MainActivity extends Activity {
private GridView gridview;
private ImageViewGridAdapter adapter;
private ArrayList<Integer>data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
gridview = (GridView)findViewById(R.id.gridView1);
data = new ArrayList<Integer>();
adapter = new ImageViewGridAdapter(this, data);
gridview.setAdapter(adapter);
data.addAll(getData());
adapter.notifyDataSetChanged();
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,DisplayActivity.class);
intent.putIntegerArrayListExtra("data", data);
intent.putExtra("position", position);
startActivity(intent);
}
});
}
public List<Integer> getData(){
List<Integer> data = new ArrayList<Integer>();
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.sd);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
data.add(R.drawable.rt);
data.add(R.drawable.qw);
return data;
}
}
跳转以后的界面,能够单独显示一张图片,能够上下页切换:
package com.edu.cn.image;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher;
import android.widget.ViewSwitcher.ViewFactory;
public class DisplayActivity extends Activity implements ViewFactory {
private ArrayList<Integer> data;
private int position;
private ImageSwitcher imageswitcher;
ViewSwitcher v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
Intent intent = getIntent();
data = intent.getIntegerArrayListExtra("data");
position = intent.getIntExtra("position", 0);
imageswitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher2);
imageswitcher.setFactory(this);
}
public void doShowPrevious(View v){
position--;
if(position < 0){
position = data.size() - 1;
}
imageswitcher.setImageResource(data.get(position));
}
public void doShowNext(View v){
position++;
if(position >= data.size()){
position = 0;
}
imageswitcher.setImageResource(data.get(position));
}
@Override
public View makeView() {
// TODO Auto-generated method stub
ImageView view = new ImageView(this);
view.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
view.setScaleType(ScaleType.FIT_CENTER);
view.setImageResource(data.get(position));
return view;
}
}
布局,浏览所有图片的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:columnWidth="70dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:stretchMode="columnWidth"
>
</GridView>
</RelativeLayout>
每张图片布局item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/item_grid"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_gravity="center_vertical"
android:src="@drawable/receive" />
</LinearLayout>
跳转以后显示一张图片的界面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageSwitcher
android:id="@+id/imageSwitcher2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
>
</ImageSwitcher>
<LinearLayout
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_weight="1"
android:onClick="doShowPrevious"
android:layout_height="wrap_content"
android:text="上一张" />
<Button
android:layout_weight="1"
android:onClick="doShowNext"
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="下一张" />
</LinearLayout>
</RelativeLayout>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理