Android 创建Library Project(库项目)与引用操作
来源:互联网 发布:ubuntu查看jdk路径 编辑:程序博客网 时间:2024/06/07 14:52
由于在开发过程,为了实现未曾了解的某种效果与特定功能,而求助于网上优秀的开源项目,在使用过程中发现引用开源的Library Project(库项目),的确可以解决很多问题,而且也给出了一种思路,好的软件公司也需要有自己的Library Project(库项目),这样不必要进行重复开发工作,这只是自己的想法。下面将自己的心得或体会记录如下,以下是自己的编写风格。
【转载使用,请注明出处:http://blog.csdn.net/mahoking/article/details/36405219】
应用场景:
在项目的开发过程中,经常会使用公司内部的公共库或使用优秀的开源项目库,以求达到快速开发、代码复用的效果。所开发的项目中要集成其他项目由于集成项目庞大,不想机械的复制,就想将集成的项目做成项目库。基于这样的需求,引用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引用他人的代码,在此表示感谢。】
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);}/** * 必要的初始化 */@Overrideprotected 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);}}@Overridepublic 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】
<RelativeLayout xmlns: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" android:gravity="center" tools:context=".MainActivity" > <com.example.lib.MyImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:scaleType="matrix" android:src="@drawable/chat_004" android:id="@+id/myImageView"/></RelativeLayout>
【MainActivtiy.java】
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;@Overrideprotected 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() {@Overridepublic void onViewClick(MyImageView view) {Toast.makeText(getApplicationContext(), "你点触了这个可爱的表情!", Toast.LENGTH_SHORT).show();}});}}
第七步:运行项目MyProj,出现如下效果。
下载地址
=======点击下载=======
【转载使用,请注明出处:http://blog.csdn.net/mahoking/article/details/36405219】
参考资料
1、http://blog.sina.com.cn/s/blog_783ede0301016ip2.html
2 0
- Android 创建Library Project(库项目)与引用操作
- Android 创建Library Project(库项目)与引用操作
- Android 创建Library Project(库项目)与引用操作
- Android 创建Library Project(库项目)与引用操作
- Android 创建Library Project(库项目)与引用操作
- Android 引用library project
- Eclipse引用外部project android library
- Eclipse引用外部project android library
- Eclipse引用外部project android library
- Android项目引用2个以上library project 时的报错
- Android项目如何refer另一个Library Project
- Android library项目的建立及引用
- Android Studio创建库项目及引用
- Android Studio创建库项目及引用
- Android Studio创建库项目及引用
- Android Studio创建库项目及引用
- Android Studio创建库项目及引用
- android项目关联android library project失败问题
- js获取前一天时间
- Python: ping网段内所有ip并返回结果
- 链表基本操作及其反转
- 【随想】android是个什么东西,andorid机制随想
- TC Member SRM 478 DIV 1(CarrotJumping-操作观察)
- Android 创建Library Project(库项目)与引用操作
- eclipse导入 library
- windows下安装使用coffeescript
- GPU渲染时代——2D图形图像中的应用(一)
- HDOJ 1261 字串数
- jstat命令详解
- win7底部任务栏还原方法
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制
- jQuery $(function(){...});