在Activiey 中更改 并刷新Layout(布局)中的控件(ImageView)的显示
来源:互联网 发布:unity3d金属材质球 编辑:程序博客网 时间:2024/05/03 18:59
DoorActivity 类:程序主界面/入口
里面有自定义Toast的显示位置,代码如下:
package temp.com;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;public class DoorActivity extends Activity {//private LayoutInflater inflater = null;private ImageView doorImageView;//当前操作的门 private int thisWindow=1;private Button okDoorButton;private Button openDoorButton;private Button closeDoorButton;private Toast toast;private DoorOperationView doorOperationView;private LinearLayout linearLayoutDoor;@Overridepublic void onCreate(Bundle savedInstanceState) {//inflater = LayoutInflater.from(this);super.onCreate(savedInstanceState);//Thread.currentThread().start();setContentView(R.layout.doorview);linearLayoutDoor = (LinearLayout) findViewById(R.id.linearLayoutDoor);// 获取门控件doorImageView = (ImageView) findViewById(R.id.doorImageView);//获取当前操作的门 getThisDoor();// 设置门开始界面setDoorFace(); // dooropen 打开;doopclose 为关闭doorOperationView =new DoorOperationView(DoorActivity.this,Values.doorIsOpen[thisWindow]);openDoorButton = (Button) DoorActivity.this.findViewById(R.id.openDoorButton);openDoorButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("监听到将要 打开门");if (!Values.doorIsOpen[thisWindow]) {// 更新门状态updateDoorState(true);linearLayoutDoor.removeAllViews();linearLayoutDoor.addView(doorOperationView);}else {toast = Toast.makeText(getApplicationContext(),"门已经打开了!", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.setDuration(400); toast.show();}}});closeDoorButton = (Button) DoorActivity.this.findViewById(R.id.closeDoorButton);closeDoorButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("监听到将要 关闭门");if (Values.doorIsOpen[thisWindow]) {// 更新门状态updateDoorState(false);linearLayoutDoor.removeAllViews();linearLayoutDoor.addView(doorOperationView);}else {toast = Toast.makeText(getApplicationContext(), "门已经关上了!", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.setDuration(400); toast.show();}}});/*okDoorButton = (Button) DoorActivity.this.findViewById(R.id.okDoorButton);okDoorButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("监听到确定按钮");if (doorOperationView != null) {finish();}}});*/}public void updateDoorState(boolean blean) {Values.doorIsOpen[thisWindow]=blean;doorOperationView =new DoorOperationView(DoorActivity.this,Values.doorIsOpen[thisWindow]);}//获取当前操作的门 public int getThisDoor(){thisWindow=Values.thisWindow-1;System.out.println("This Door is "+thisWindow);if(Values.doorIsOpen[thisWindow])System.out.println("门已打开");else {System.out.println("门已关闭");};return thisWindow;}// 设置门开始界面public void setDoorFace(){if(Values.doorIsOpen[thisWindow])doorImageView.setImageResource(R.drawable.dooropen);else {doorImageView.setImageResource(R.drawable.doorclose);}}}DoorOperationView类:
负责图片的资源等说明与操作,代码如下:
package temp.com;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.view.View;public class DoorOperationView extends View{ContextmContext= null;Bitmap bitmap=null;/* 定义一个Drawable对象 */DrawablemBitDrawable= null;boolean isOpen=false;private Paint paintNormal = null;// 小画笔public DoorOperationView(DoorActivity doorActivity,boolean isOpen){super(doorActivity);this.isOpen=isOpen;paintNormal = new Paint();paintNormal.setAntiAlias(true);paintNormal.setStyle(Paint.Style.STROKE);paintNormal.setColor(Color.BLACK);paintNormal.setStrokeWidth(1);if(isOpen){//窗户为打开状态 这里是关闭动画bitmap = ((BitmapDrawable)doorActivity.getResources().getDrawable(R.drawable.dooropen)).getBitmap();}else if (!isOpen) {//窗户为关闭状态 这里是打开动画bitmap = ((BitmapDrawable)doorActivity.getResources().getDrawable(R.drawable.doorclose)).getBitmap();}}public void onDraw(Canvas canvas){super.onDraw(canvas);canvas.drawBitmap(bitmap, 0, 0, paintNormal);}}
Values 类:临时存放的值。
代码如下:
//Valuespackage temp.com;public class Values { public static int thisWindow=1;//当前操作的控件的ID //对应七扇门,是否打开 true 表示门是打开的 false 表示门是关闭的 public static boolean doorIsOpen[]={ true, //门1 true, //门2 true, //门3 true, //门4 true, //门5 true, //门6 true, //门7 }; }
doorview.xml:界面布局文件。
代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent" android:id="@+id/DoorView"android:background="#000000"><LinearLayout android:id="@+id/linearLayoutDoor"android:layout_width="320dip" android:layout_height="320dip"><ImageView android:id="@+id/doorImageView"android:layout_width="320dip" android:layout_height="320dip" /></LinearLayout><RelativeLayout android:id="@+id/linearLayoutDoorTheSecond"android:layout_width="wrap_content" android:layout_height="wrap_content"><Button android:id="@+id/openDoorButton" android:layout_width="80dip"android:layout_height="wrap_content" android:text="开门"android:layout_alignTop="@id/linearLayoutDoorTheSecond"android:layout_alignLeft="@id/linearLayoutDoorTheSecond" /><Button android:id="@+id/closeDoorButton" android:layout_width="80dip"android:layout_height="wrap_content" android:text="关门"android:layout_toRightOf="@id/openDoorButton" android:layout_alignTop="@id/linearLayoutDoorTheSecond" /><Button android:id="@+id/okDoorButton" android:layout_width="80dip"android:layout_height="wrap_content" android:text="确定"android:layout_toRightOf="@id/closeDoorButton" android:layout_alignTop="@id/linearLayoutDoorTheSecond" /></RelativeLayout></LinearLayout><!--android:layout_above 将该 控件放在给定ID之上 android:layout_below 之下android:layout_toLeftOf 本身的右边缘与另外的左边对齐 android:layout_toRightOf 左边 右边android:layout_alignBaseline baseline对齐 android:layout_alignBotton底部与底部对齐 android:layout_alignLeft 左边与左边对齐 android:layout_alignRight右边与右边对齐 android:layout_alignTop 顶部与顶部对齐android:layout_alignParentBottom 为真时,底部与父控件的底部对齐android:layout_alignParentLeft android:layout_alignParentRightandroid:layout_alignParentTop android:layout_centerHorizontal为真时,被置于水平方向中央 android:layout_centerInParentandroid:layout_centerVertical 为真时,被置于垂直方向中央-->
程序运行状态:
1)点击打开按钮时显示如图:
2)点击关闭按钮时显示如图:
//源码下载:http://download.csdn.net/source/3222583
如果没有资源分的或没有CSDN号的可以留邮箱,或发邮件至254443233@qq.com;本人免费放送。
- 在Activiey 中更改 并刷新Layout(布局)中的控件(ImageView)的显示
- [Android] 拍照、截图、保存并显示在ImageView控件中
- android拍照,截图,保存并显示在ImageView控件中
- Android 拍照并显示在ImageView中(进阶)
- Android 拍照并显示在ImageView中(进阶)
- wxFormbuileder中wxwidgets的布局控件(layout)的使用
- Android 拍照并显示在ImageView中(解决图片压缩失真的问题)
- Android 拍照并显示在ImageView中
- android layout文件中引用自定义控件,在Graphical Layout中不显示的问题
- [Android]Layout中ImageView中图片的对齐显示问题
- 圆弧矩形进度条,可用于在layout或者imageview外层实现进度的显示(改良android-square-progressbar)
- 得到数据库中的数据,并在Highcharts控件中显示
- 在Android中如何获取视频的第一帧图片并显示在一个ImageView中
- 在Android中如何获取视频的第一帧图片并显示在一个ImageView中
- 在Activity中,layout布局中控件的各种实例化
- 在代码中创建新的imageview(往布局容器中添加新的view)
- QT的学习之路 1布局控件(Layout)
- Framelayout布局中嵌套多个布局layout的显示
- about utf7-BOM string injection
- 游戏编程初学者
- SQL高级注入使用之储存过程
- 有理想的程序员必须知道的15件事
- 重写maximo之--maximo表结构
- 在Activiey 中更改 并刷新Layout(布局)中的控件(ImageView)的显示
- 双向BFS
- 刚学算法,程序运行不了,谁帮忙看看
- 有理想的程序员必须知道的15件事[转]
- 深度介绍Linux操作系统内核的工作原理
- javascript 网页设计 怎么在同一位置显示几张不同的图片(图片自动变换)
- C# 调用API 实现控制系统鼠标样式
- mysql 储存过程、触发器的创建、删除及使用
- ajax技术简介及入门实例 转帖