ImageViewTest

今天我在真机上测试了一下自己的一下小应用,在测试ImageViewTest时,对于界面的显示不满意,就在布局文件中改换了一下ImageView这个组件的位置,把它放到Button这个组件的上面,运行的时候出现了异常。提示信息ClassCastException: android.widget.ImageView can not be cast to android.widget.Button


对于出现这样一个问题百思不得其解,查阅了一下资料,有一个链接http://www.myexception.cn/android/377944.html

解决了这个问题,不过个人觉得还是不是很明白,ImageView组件是一个单标记的标签,怎么解释为ImageView组件里包含了别的组件啊


XML文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ImageViewTestActivity" >
    
    <ImageView
        android:id="@+id/image2"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:background="#fff"
        android:layout_marginTop="5dp"
        
         />
我这儿的ImageView是有结束符/>的啊,怎么会报哪个错误呢
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


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


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


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


    </LinearLayout>
    
    <ImageView
        android:id="@+id/image1"
        android:layout_width="320px"
        android:layout_height="240px"
        android:src="@drawable/a1"
        android:scaleType="fitCenter" 
        />

<!--
<ImageView
        android:id="@+id/image2"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:background="#fff"
        android:layout_marginTop="5dp"
        
         />

-->

本来这个放大镜是放在这儿的,但是为了使Image1能够对于不同大小的图片都有足够大小的空间来显示,就把Image2上移到Button之上
    
    
</LinearLayout>


再有我对layout布局文件进行了如下修改,没有得到预想的结果

就是将两个ImageView交换位置,我在代码中是根据组件的ID来找组件的,我也没有修改组件的ID,但是两个ImageView的功能交换了

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ImageViewTestActivity" >
    
    

    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


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


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


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


    </LinearLayout>
    <ImageView
        android:id="@+id/image2"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:background="#fff"
        android:layout_marginTop="5dp"
        
         />
    <ImageView
        android:id="@+id/image1"
        android:layout_width="320px"
        android:layout_height="240px"
        android:src="@drawable/a1"
        android:scaleType="fitCenter" 
        />


    
    
</LinearLayout>




我的程序如下:

package com.example.imageviewtest;


import android.R.integer;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Switch;


public class ImageViewTestActivity extends Activity {


int[] images=new int[]{
R.drawable.a1,
R.drawable.a2,
R.drawable.a3,
R.drawable.a4,
R.drawable.a5,
R.drawable.a6,
R.drawable.a7,
R.drawable.a8
};
int currentImg=2;
private int alpha=255;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_imageviewtest);
final Button plus=(Button)findViewById(R.id.plus);
final Button minus=(Button)findViewById(R.id.minus);
final ImageView image1=(ImageView)findViewById(R.id.image1);
final ImageView image2=(ImageView)findViewById(R.id.image2);
final Button next=(Button)findViewById(R.id.next);

next.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
image1.setImageResource(images[++currentImg%images.length]);
}
});
OnClickListener listener=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v==plus) {
alpha+=20;
}
if (v==minus) {
alpha-=20;
}
if (alpha>=255) {
alpha=255;
}
if (alpha<=0) {
alpha=0;
}
image1.setAlpha(alpha);
}
};
plus.setOnClickListener(listener);
minus.setOnClickListener(listener);
image1.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
BitmapDrawable bitmapDrawable=(BitmapDrawable)image1.getDrawable();
Bitmap bitmap=bitmapDrawable.getBitmap();
double scale=bitmap.getWidth()/320.0;
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;
}
image2.setImageBitmap(bitmap.createBitmap(bitmap,x,y,120,120));
image2.setAlpha(alpha);
return false;
}
});
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值