观书散遗帙,探古穷至妙。这篇文章主要讲述Android 创建Library Project(库项目)与引用操作相关的知识,希望能为你提供帮助。
原文网址:http://www.2cto.com/kf/201407/313718.html
应用场景:在项目的开发过程中,经常会使用公司内部的公共库或使用优秀的开源项目库,以求达到快速开发、代码复用的效果。所开发的项目中要集成其他项目由于集成项目庞大,不想机械的复制,就想将集成的项目做成项目库。基于这样的需求,引用Library Project(库项目),成为了迫切的需要,这样做以后集成项目升级、扩展也都方便与快捷。为此,我们不得不去了解Android
Library Project(库项目)创建与引用操作。 【转载使用,请注明出处:http://blog.csdn.net/mahoking/article/details/36405219】
使用方式:第一步:创建项目MyLib,【Next】。
文章图片
第二步:红色部分取消勾选,不勾选 [Create custom launcher icon] 和[Create activity], 勾选[Make this project as a library]。
文章图片
第三步:先建包名,添加MyImageView.java 文件。 【MyImageView.java引用他人的代码,在此表示感谢。】
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | package com.example.lib;
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ImageView;
public class MyImageView extends ImageView {
private static final String TAG = MyImageView;
private static final int SCALE_REDUCE_INIT = 0 ;
private static final int SCALING = 1 ;
private static final int SCALE_ADD_INIT = 6 ;
/** * 控件的宽*/
private int mWidth;
/*** 控件的高*/
private int mHeight;
/*** 控件的宽1/2*/
private int mCenterWidth;
/*** 控件的高 1/2*/
private int mCenterHeight;
/*** 设置一个缩放的常量*/
private float mMinScale = 0 .85f;
/*** 缩放是否结束*/
private boolean isFinish = true ;
public MyImageView(Context context) {
this (context, null );
}
public MyImageView(Context context, AttributeSet attrs) {
this (context, attrs, 0 );
}
public MyImageView(Context context, AttributeSet attrs, int defStyle) {
super (context, attrs, defStyle);
}
/**
* 必要的初始化
*/
@Override
protected void onLayout( boolean changed, int left, int top, int right,
int bottom) {
super .onLayout(changed, left, top, right, bottom);
if (changed) {
mWidth = getWidth() - getPaddingLeft() - getPaddingRight();
mHeight = getHeight() - getPaddingTop() - getPaddingBottom();
mCenterWidth = mWidth / 2 ;
mCenterHeight = mHeight / 2 ;
Drawable drawable = getDrawable();
BitmapDrawable bd = (BitmapDrawable) drawable;
bd.setAntiAlias( true );
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
float X = event.getX();
float Y = event.getY();
mScaleHandler.sendEmptyMessage(SCALE_REDUCE_INIT);
break ;
case MotionEvent.ACTION_UP:
mScaleHandler.sendEmptyMessage(SCALE_ADD_INIT);
break ;
}
return true ;
}
/**
* 控制缩放的Handler
*/
private Handler mScaleHandler = new Handler() {
private Matrix matrix = new Matrix();
private int count = 0 ;
private float s;
/**
* 是否已经调用了点击事件
*/
private boolean isClicked;
public void handleMessage(android.os.Message msg) {
matrix.set(getImageMatrix());
switch (msg.what) {
case SCALE_REDUCE_INIT:
if (!isFinish) {
mScaleHandler.sendEmptyMessage(SCALE_REDUCE_INIT);
} else {
isFinish = false ;
count = 0 ;
s = ( float ) Math.sqrt(Math.sqrt(mMinScale));
beginScale(matrix, s);
mScaleHandler.sendEmptyMessage(SCALING);
}
break ;
case SCALING:
beginScale(matrix, s);
if (count <
4 ) {
mScaleHandler.sendEmptyMessage(SCALING);
} else {
isFinish = true ;
if (MyImageView. this .mOnViewClickListener != null
&
&
!isClicked) {
isClicked = true ;
MyImageView. this .mOnViewClickListener
.onViewClick(MyImageView. this );
} else {
isClicked = false ;
}
}
count++;
break ;
case SCALE_ADD_INIT:
if (!isFinish) {
mScaleHandler.sendEmptyMessage(SCALE_ADD_INIT);
} else {
isFinish = false ;
count = 0 ;
s = ( float ) Math.sqrt(Math.sqrt( 1 .0f / mMinScale));
beginScale(matrix, s);
mScaleHandler.sendEmptyMessage(SCALING);
}
break ;
}
}
};
protected void sleep( int i) {
try {
Thread.sleep(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 缩放
*
* @param matrix
* @param scale
*/
private synchronized void beginScale(Matrix matrix, float scale) {
matrix.postScale(scale, scale, mCenterWidth, mCenterHeight);
setImageMatrix(matrix);
}
/**
* 回调接口
*/
private OnViewClickListener mOnViewClickListener;
public void setOnClickIntent(OnViewClickListener onViewClickListener) {
this .mOnViewClickListener = onViewClickListener;
}
public interface OnViewClickListener {
void onViewClick(MyImageView view);
}
} |
第四步:创建另一个项目MyProj ,勾选 [Create custom launcher icon] 和[Create activity], 不勾选[Make this project as a library]。
第五步:引用MyLib项目。
文章图片
第六步:编写activtiy_main.xml与对应的Activity。
【activtiy_main.xml】
?
1 2 3 4 | <
relativelayout android:gravity= "center" android:layout_height= "match_parent" android:layout_width= "match_parent" tools:context= ".MainActivity" xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" >
<
com.example.lib.myimageview android:id= "@+id/myImageView/" android:layout_height= "wrap_content" android:layout_width= "wrap_content" android:scaletype= "matrix" android:src=https://www.songbingjia.com/android/ "@drawable/chat_004" >
<
/com.example.lib.myimageview>
<
/relativelayout>
|
【MainActivtiy.java】
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.example.myproj;
import com.example.lib.MyImageView;
import com.example.lib.MyImageView.OnViewClickListener;
import android.os.Bundle;
import android.app.Activity;
import android.widget.Toast;
public class MainActivity extends Activity {
private MyImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
private void initViews() {
imageView = (MyImageView) findViewById(R.id.myImageView);
imageView.setOnClickIntent( new OnViewClickListener() {
@Override
public void onViewClick(MyImageView view) {
Toast.makeText(getApplicationContext(), 你点触了这个可爱的表情!, Toast.LENGTH_SHORT).show();
}
});
}
} |
第七步:运行项目MyProj,出现如下效果。
文章图片
下载地址=======点击下载======= 【转载使用,请注明出处:http://blog.csdn.net/mahoking/article/details/36405219】
参考资料【Android 创建Library Project(库项目)与引用操作】1、http://blog.sina.com.cn/s/blog_783ede0301016ip2.html
推荐阅读
- android中使用URL读取网络资源
- office2013闪退怎样办?office2013闪退处理办法_其它办公
- Excel2013中3大常用技巧介绍_Excel专区
- Excel2013表格如何导入Access数据库数据?_Excel专区
- Excel2013默认字体如何设置?_Excel专区
- excel2013未响应怎样办?excel2013未响应处理办法_Excel专区
- excel2013怎样插入表单控件?_Excel专区
- Excel2013自动保存技巧怎样设置?_Excel专区
- Excel2013怎样用红灯图标记录工作情况?_Excel专区