功能如下:获取安卓assets文件内的图片
如果对assets文件如何创建不是很熟悉参考以下文章
https://blog.csdn.net/chuyouyinghe/article/details/79891934
图片就随便吧只要不是太大都能读出来
布局页面及其简单先来看一下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.cxc.bitmapt.MainActivity">
<Button
android:id="@+id/next"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="160dp"
android:text="下一个"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/image" />
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp" />
</android.support.constraint.ConstraintLayout>
主页面
//图片查看器
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
String[] imageArray = null;
AssetManager assetsManager = null;
int currentImgNo = 0;
private Button next;
private ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
next = (Button) findViewById(R.id.next);
image = (ImageView) findViewById(R.id.image);
next.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.next:
try
{
assetsManager = getAssets();
//获取/assets/目录下所有文件
imageArray = assetsManager.list("");
}
catch (IOException e)
{
e.printStackTrace();
}
//为bn按钮绑定事件监听器,该监听器将会查看下一张图片
next.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View sources)
{
//如果发生数组越界
if (currentImgNo >= imageArray.length)
{
currentImgNo = 0;
}
//找到下一个图片文件
while (!imageArray[currentImgNo].endsWith(".png")
&& !imageArray[currentImgNo].endsWith(".jpg")
&& !imageArray[currentImgNo].endsWith(".gif"))
{
currentImgNo++;
//如果已发生数组越界
if (currentImgNo >= imageArray.length)
{
currentImgNo = 0;
}
}
InputStream assetFile = null;
try
{
//打开指定资源对应的输入流
assetFile = assetsManager.open(imageArray[currentImgNo++]);
}
catch (IOException e)
{
e.printStackTrace();
}
BitmapDrawable bitmapDrawable = (BitmapDrawable) image
.getDrawable();
//如果图片还未回收,先强制回收该图片
if (bitmapDrawable != null
&& !bitmapDrawable.getBitmap().isRecycled()) //①
{
bitmapDrawable.getBitmap().recycle();
}
//改变ImageView显示的图片
image.setImageBitmap(BitmapFactory.decodeStream(assetFile)); //②
}
});
break;
}
}
}
项目GIthub地址:https://github.com/307572384/Bitmapt
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134132.html