<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layoutMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"> <Button
android:id="@+id/upAlpha"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="增大透明度" /> <Button
android:id="@+id/downAlpha"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="降低透明度" /> <Button
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一张" /> </LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout> <ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="400px"
android:background="#0000ff"
android:scaleType="fitCenter"
android:src="@drawable/camera" /> <ImageView
android:id="@+id/imageView2"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#0000ff"
android:layout_marginTop="10dp"
android:src="@drawable/camera" /> </LinearLayout>
package com.moon.hello2;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; import com.moon.hello2.R.layout; import android.R.integer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
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.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ToggleButton; public class MainActivity extends Activity {
int[] images = new int[] { R.drawable.a1, R.drawable.a2, R.drawable.a3,
R.drawable.a4, R.drawable.a5 };
int currentImg = 0;
int alpha = 255; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
final ImageView iView = (ImageView) findViewById(R.id.imageView1);
final ImageView iView2 = (ImageView) findViewById(R.id.imageView2);
final Button btnUpAlpha = (Button) findViewById(R.id.upAlpha);
final Button btnDownAlpha = (Button) findViewById(R.id.downAlpha);
Button btnNext = (Button) findViewById(R.id.next);
iView.setImageResource(images[this.currentImg]);
btnNext.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
currentImg++;
if (currentImg >= images.length) {
currentImg = 0;
}
BitmapDrawable bitmapDrawable = (BitmapDrawable) iView
.getDrawable();
if (!bitmapDrawable.getBitmap().isRecycled()) {
bitmapDrawable.getBitmap().recycle();
}
iView.setImageBitmap(BitmapFactory.decodeResource(
getResources(), images[currentImg]));
}
});
OnClickListener listener = new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == btnUpAlpha) {
alpha += 20;
} else if (v == btnDownAlpha) {
alpha -= 20;
} else {
;
}
if (alpha > 255) {
alpha = 255;
} else if (alpha < 0) {
alpha = 0;
} else {
;
}
iView.setAlpha(alpha);
}
};
btnDownAlpha.setOnClickListener(listener);
btnUpAlpha.setOnClickListener(listener);
iView.setOnTouchListener(new OnTouchListener() { @Override
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
BitmapDrawable bitmapDrawable = (BitmapDrawable) iView
.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;
}
iView2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120));
iView2.setAlpha(alpha);
return false;
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

疯狂java讲义笔记 2.3.7的更多相关文章

  1. 疯狂java讲义--笔记

    第一章.Java语言概述与开发环境 什么是软件:一系列按照特定顺序组织的计算机数据和指令的集合: 交互方式:两种 GUI(Graphical User Interface) 图像界面 .CLI (Co ...

  2. 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题

    调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...

  3. 《疯狂java讲义》笔记 1-5章

    1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...

  4. 疯狂java讲义 第三版 笔记

      java7新加特性: 0B010101  二进制数 int c=0B0111_1111;   数值中使用下划线分隔 switch 支持String类型   字符串常量放在常量池 String s0 ...

  5. java8--集合(疯狂java讲义3复习笔记)

    1.集合分四类:set,map,list,queue 位于java.util包下. 集合类和数组的区别,数组可以保存基本类型的值或者是对象的引用,而集合里只能保存对象的引用. 集合类主要由两个接口派生 ...

  6. 读《疯狂Java讲义》笔记总结一

    最近在读<疯狂Java讲义>,现把其中遇到的一些自己以前没掌握的点儿记录下来. 1.字符串相关 字符串不是基本类型,字符串是一个类,也就是一个引用类型. 字符串转int类型String a ...

  7. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  8. 疯狂java讲义——继承

    本文章只是记录我在学习疯狂java讲义里面,对之前java知识查缺补漏进行的总结. 方法重写 方法重写要遵循"两同两小一大"规则."两同"即方法名相同.形参列表 ...

  9. udp协议基础(转自疯狂java讲义)

    第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...

随机推荐

  1. CFS: 虚拟运行时间

    http://edsionte.com/techblog/archives/4331 nice和prio的关系如下: #define NICE_TO_PRIO(nice) (MAX_RT_PRIO+n ...

  2. QT程序打包发布(双击运行)

  3. setTimeout 方法用于在指定的毫秒数后调用函数或计算表达式

    setTimeout 方法用于在指定的毫秒数后调用函数或计算表达式

  4. kissy

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  5. weex APIs

    1.通过这个$vm()上下文访问这些api在脚本的方法 <script> module.exports = { methods: { somemethod: function() { th ...

  6. Unity3D 常用事件

    这里总结一下U3D常用的一些事件 //按下事件,GetKeyDown //抬起事件,Input.GetKeyUp //长按事件,Input.GetKey //任意键按下事件,Input.anyKeyD ...

  7. 表达式:使用API创建表达式树(3)

    一.DebugInfoExpression:发出或清除调试信息的序列点. 这允许调试器在调试时突出显示正确的源代码. static void Main(string[] args) { var asm ...

  8. oracle中drop、delete和truncate的区别

    oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...

  9. Oracle dblink的创建及使用

    在工作中遇到的情况简单说下: --首先要赋予用户创建dblink的权限.grant resource to ods_nwsc;grant create database link to ods_nws ...

  10. SQLSERVER 触发器 将一个服务器上的数据库中数据插入到另一个服务器上的数据库中怎么做

    首先要执行 sp_addlinkedserver '服务器ip' 然后开始写语句 insert into ip.库名字.dbo.table select * from iserted