前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ImageView使用

ImageView使用

作者头像
李小白是一只喵
发布2020-04-24 08:44:40
7310
发布2020-04-24 08:44:40
举报
文章被收录于专栏:算法微时光算法微时光

image.png

目录

ImageView

ImageView是图片控件,可以使用其显示图片.

xml写法:

代码语言:javascript
复制
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:srcCompat="@tools:sample/backgrounds/scenic[0]" />

加载图片入项目

为了引用图片,需要先加载图片.

进入到项目的生成目录里,找到对应的res目录下的drawable中:

image.png

如上图,讲两个图片放在此目录下.

这样我们就可以在项目中看到想要的图片了.

image.png

然后尝试加载图片:

代码语言:javascript
复制
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:srcCompat="@drawable/001.jpg" />

但是编译报错了Error: The resource name must start with a letter

代码语言:javascript
复制
Caused by: com.android.build.gradle.tasks.ResourceException: /home/user/AndroidStudioProjects/image/app/src/main/res/drawable/001.jpg: Error: The resource name must start with a letter
    at com.android.build.gradle.tasks.MergeResources.doIncrementalTaskAction(MergeResources.java:424)
    at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:110)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
    ... 108 more

这是因为图片使用了数字作为名字开头.

这个是个坑.....

我们再来修改下图片的名字

image.png

xml文件也做相应的修改

代码语言:javascript
复制
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:srcCompat="@drawable/p001" />

再次编译,这时就可以了O(∩_∩)O

image.png

加载图片还是挺方便的.

下面尝试再添加个按钮,点击按钮后更换ImageView中的图片

小实验

首先添加个next按钮:

代码语言:javascript
复制
    <Button
        android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="next" />

并在代码中获取到按钮:

代码语言:javascript
复制
next = (Button)findViewById(R.id.next);

再为按钮设定好点击监听事件:

代码语言:javascript
复制
       next.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                i++;

                if(i % 2 != 0)
                    image.setImageResource(R.drawable.p123);
                else
                    image.setImageResource(R.drawable.p001);
            }
        });

基本就差不多了.

全部代码

MainActivity.java文件:

代码语言:javascript
复制
package com.example.user.image;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;


public class MainActivity extends AppCompatActivity {

    Button next;
    ImageView image;

    int i = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        next = (Button)findViewById(R.id.next);
        image = (ImageView) findViewById(R.id.imageView);

        image.setImageResource(R.drawable.p001);

        next.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                i++;

                if(i % 2 != 0)
                    image.setImageResource(R.drawable.p123);
                else
                    image.setImageResource(R.drawable.p001);
            }
        });
    }
}

activity_main.xml文件

代码语言:javascript
复制
<?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=".MainActivity">


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:srcCompat="@drawable/p001" />

    <Button
        android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="next" />

</android.support.constraint.ConstraintLayout>

运行效果:

image.png

点击按钮后:

image.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • ImageView
  • 加载图片入项目
  • 小实验
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档