Android界面编程之四 第三组UI组件:ImageView及其子类
来源:互联网 发布:大专转行数据分析师 编辑:程序博客网 时间:2024/06/12 15:20
ImageView继承自View组件,ImageView还派生了ImageButton、ZoomButton等组件
Image支持的XML属性如下:
android:adjustViewBounds
是否调整自己的边界来保持所显示图片的长宽比
android:cropToPadding
若属性设为true,该组件将会被裁剪到保留该ImageView的padding
android:maxHeight
设置ImageView的最大高度
android:maxWidthandroid:scaleType
设置所显示的图片如何缩放或移动以适应ImageView的大小
android:src
设置ImageView所显示的Drawable对象的ID
android:scaleType属性可指定如下属性值:
matrix
fitXY
fitStart
fitCenter
fitEnd
center
centerCrop
centerInside
为控制ImageView显示的图片,ImageView提供了如下方法:
setImageBitmap(Bitmap bm)
setImageDrawable(Drawable drawable)
setImageResource(int resId)
setImageURI(Uri uri)
oops 陷阱:
R.drawable.xxxxx(此处xxx不可为1,2,3,4等数字,否则会导致Build失败)
图片显示示例程序代码:
publicclassMainActivity extends ActionBarActivity {
int[]images= new int[]{
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5
};
intcurrentImg= 2;
privateintalpha= 255;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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);
final Button last = (Button) findViewById(R.id.last);
next.setOnClickListener(newOnClickListener()
{
@Override
publicvoidonClick(View v)
{
image1.setImageResource(
images[++currentImg% images.length]);
}
});
last.setOnClickListener(newOnClickListener()
{
@Override
publicvoidonClick(View v)
{
if(currentImg== 0)
{
currentImg= images.length;
}
image1.setImageResource(
images[--currentImg]);
}
});
//change alpha
OnClickListener listener = new OnClickListener()
{
@Override
publicvoidonClick(View v)
{
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(newOnTouchListener()
{
@Override
publicbooleanonTouch(View view, MotionEvent event)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
doublescale = bitmap.getWidth()/320.0;
intx = (int) (event.getX()*scale);
inty = (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);
returnfalse;
}
int[]images= new int[]{
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5
};
intcurrentImg= 2;
privateintalpha= 255;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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);
final Button last = (Button) findViewById(R.id.last);
next.setOnClickListener(newOnClickListener()
{
@Override
publicvoidonClick(View v)
{
image1.setImageResource(
images[++currentImg% images.length]);
}
});
last.setOnClickListener(newOnClickListener()
{
@Override
publicvoidonClick(View v)
{
if(currentImg== 0)
{
currentImg= images.length;
}
image1.setImageResource(
images[--currentImg]);
}
});
//change alpha
OnClickListener listener = new OnClickListener()
{
@Override
publicvoidonClick(View v)
{
if(v == plus)
{
alpha+= 20;
}
if(v == minus)
{
alpha-= 20;
}
if(alpha>= 255)
{
alpha= 255;
}
if(alpha<= 0)
{
alpha= 0;
}
image1.
}
};
plus.setOnClickListener(listener);
minus.setOnClickListener(listener);
image1.setOnTouchListener(newOnTouchListener()
{
@Override
publicbooleanonTouch(View view, MotionEvent event)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
doublescale = bitmap.getWidth()/320.0;
intx = (int) (event.getX()*scale);
inty = (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.
returnfalse;
}
});
}
}
ImageView 派生了如下两个子类:
ImageButton:imageButton上显示图片
QuickContactBadge
ImageButton派生了一个ZoomButton,为ZoomButton的android:src属性分别指定btn_minus、btn_plus,即可实现“放大”、“缩小”按钮
QuickContactBadge继承了ImageView,它的本质也是图片,android:src属性可设为显示图片,该图片可以关联到联系人,
assignContactFromEmail(String emailAddress, boolean lazyLookup)
assignContactFromPhone(String phoneNumber, boolean lazyLookup)
assignContactUri(Uri contactUri)
关联联系人程序代码如下:
xml文件
<LinearLayoutxmlns: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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<QuickContactBadge
android:id="@+id/badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="My icon"
android:textSize="16dp"
/>
</LinearLayout>
Java程序:
publicclassMainActivity extends ActionBarActivity {
QuickContactBadge badge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
badge = (QuickContactBadge) findViewById(R.id.badge);
badge.assignContactFromPhone("15926563025",false);
}
QuickContactBadge badge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
badge = (QuickContactBadge) findViewById(R.id.badge);
badge.assignContactFromPhone("15926563025",false);
}
0 0
- Android界面编程之四 第三组UI组件:ImageView及其子类
- Android界面编程之三 第二组UI组件:TextView及其子类
- Android界面编程之五 第四组UI组件:AdapterView及其子类
- Android界面编程之六 第五组UI组件:ProgressBar及其子类
- Android界面编程之七 第六组UI组件:ViewAnimator及其子类
- android应用界面编程(四)--ImageView及其子类
- UI组件:ImageView及其子类
- UI组件之ImageView及其子类(二)ImageButton ,ZoomButton
- android-UI组件(三):ImageView及其子类
- 【android_温故知新】第 3 组 UI 组件:ImageView 及其子类
- 第3组UI组件:ImageView及其子类
- UI组件之ImageView及其子类(一)ImageView显示图片
- UI组件之TextView及其子类(四)AnalogClock,DigitalClock
- Android用户界面 UI组件--TextView及其子类(四) Chronometer计时器
- Android用户界面UI组件--AdapterView及其子类(四) GridView
- android-UI组件(四):AdapterView及其子类
- ui.ImageView及其子类
- Android用户界面 UI组件--ImageView及其子类ImageButton,QuickContactBadge附带Draw9Patch工具说明
- JSP基础——分别使用表达式和脚本方式打印九九乘法表
- Android界面编程之三 第二组UI组件:TextView及其子类
- 最大熵与逻辑回归的等价性
- ScrollView的使用以及简单Demo
- 原子性操作atomic_t
- Android界面编程之四 第三组UI组件:ImageView及其子类
- POJ 1308 Is It A Tree? (并查集)
- Android界面编程之五 第四组UI组件:AdapterView及其子类
- 动态增大的栈
- Android界面编程之六 第五组UI组件:ProgressBar及其子类
- HDU 2614 DFS
- Dot Net 使用 itextsharp 类库创建PDF文件
- mybatis入门教程
- Android界面编程之七 第六组UI组件:ViewAnimator及其子类