第16章:ImageView及其子类
来源:互联网 发布:看图软件acdsee 编辑:程序博客网 时间:2024/05/05 21:42
ImageView继承自View组件,ImageView派生了ImageButton、ZoomButton等组件。
下面通过个实例来看下具体用法:
实例:图片浏览器
本实例的图片浏览器可以改变查看图片的透明度,可以通过调用ImageView的setImageAlpha()方法实现。可以通过一个小区域来查看图片的原始大小,因此本实例会定义两个ImageView,一个用于查看图片整体,一个用于查看图片的细节。
activity_main.xml
<LinearLayout 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" android:orientation="vertical" android:gravity="center_horizontal" tools:context=".MainActivity"> <LinearLayout android:layout_marginTop="10dp" android:gravity="center_horizontal" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/amplification" android:text="@string/amplification" android:layout_width="80dp" android:layout_height="wrap_content" /> <Button android:id="@+id/narrow" android:text="@string/narrow" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_width="80dp" android:layout_height="wrap_content" /> <Button android:id="@+id/next" android:text="@string/next" android:layout_width="80dp" android:layout_height="wrap_content" /> </LinearLayout> <ImageView android:id="@+id/image1" android:layout_width="wrap_content" android:layout_height="239dp" android:src="@drawable/a" android:scaleType="fitCenter"/> <ImageView android:id="@+id/image2" android:layout_width="150dp" android:layout_height="150dp" /></LinearLayout>
MainActivity.java
package cn.edu.hpu.acm.imageViewTest;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { private Button amplification; private Button narrow; private Button next; private ImageView imageView1; private ImageView imageView2; int[] images = new int[]{ R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, R.drawable.f, R.drawable.g, }; int currentImg = 2; private int alpha = 255; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); amplification = (Button) findViewById(R.id.amplification); narrow = (Button) findViewById(R.id.narrow); next = (Button) findViewById(R.id.next); imageView1 = (ImageView) findViewById(R.id.image1); imageView2 = (ImageView) findViewById(R.id.image2); next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //控制显示下一张图片 imageView1.setImageResource(images[++currentImg%images.length]); } }); View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { if (v==amplification){ alpha +=20; } if (v==narrow){ alpha -=20; } if (alpha>=255){ alpha = 255; } if (alpha<=0){ alpha = 0; } //设置图片的显示透明度 imageView1.setImageAlpha(alpha); } }; amplification.setOnClickListener(listener); narrow.setOnClickListener(listener); //设置图片的触摸监听器 imageView1.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //创建一个Bitmap对象 BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView1.getDrawable(); //获得触摸位置的图片 Bitmap bitmap = bitmapDrawable.getBitmap(); //bitmp 图片实际大小与第一个ImageView的缩放比例 double scale = 1.0 * bitmap.getHeight() / imageView1.getHeight(); //获取需要显示的图片的任意点 int x = (int) (event.getX()*scale); int y = (int) (event.getY()*scale); if (x+120>bitmap.getWidth()){ x = bitmap.getWidth()-120; } if (y+120>bitmap.getHeight()){ y = bitmap.getHeight()-120; } //显示图片的指定区域 imageView2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120)); imageView2.setImageAlpha(alpha); return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
String.xml
<resources> <string name="app_name">图片浏览器</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="amplification">放大透明</string> <string name="narrow">缩小透明</string> <string name="next">下一张</string></resources>
0 0
- 第16章:ImageView及其子类
- ImageView及其子类
- ImageView及其子类
- ui.ImageView及其子类
- ImageView及其子类
- 【android_温故知新】第 3 组 UI 组件:ImageView 及其子类
- 第3组UI组件:ImageView及其子类
- UI组件:ImageView及其子类
- ImageView类及其子类以及ImageView.ScaleType
- android基础-TextView及其子类、ImageView及其子类
- 2014-2-7ImageView及其子类
- Android学习笔记(21):ImageView及其子类
- AndroidUI控件之imageview及其子类
- 第2组UI-ImageView及子类
- android-UI组件(三):ImageView及其子类
- UI组件之ImageView及其子类(二)ImageButton ,ZoomButton
- android应用界面编程(四)--ImageView及其子类
- 安卓UI控件-TextView、ImageView及其子类
- 打酱油两个月
- [LeetCode]Maximum Depth of Binary Tree
- 出来行,迟早是要还的(篇六):衣带渐宽终不悔
- hdu 5360 Hiking
- 设计模式-访问者模式
- 第16章:ImageView及其子类
- java四种内部类(静态内部类,成员内部类,方法内部类,匿名内部类)详解
- Swift didSet 用处
- leetcode 87: Scramble String
- 如何正确的书写网站底部版权(分享来自织梦团队)
- Android 布局
- Leetcode #136 Single Number
- 优化的python生产者消费者实现
- 欢迎使用CSDN-markdown编辑器