在android Activity中实现图片的拖动.docx
《在android Activity中实现图片的拖动.docx》由会员分享,可在线阅读,更多相关《在android Activity中实现图片的拖动.docx(26页珍藏版)》请在冰豆网上搜索。
在androidActivity中实现图片的拖动
在androidActivity中实现图片的拖动
1.图片在Activity中的固定区域上下移动使用到ImageView,和TranslateAnimation控制位置变化的动画类进行操作。
2.第一步是在xml文件中添加图片控件ImageView并且引用资源文件中的相应图片。
第二步在正文文件中设置ImageView类型的变量imageview,并且用findViewById()将变量imageview与xml中的ImageView相关联,在正文文件中设置imageview将它与监听器绑定运用TranslateAnimationtranslationAnimation=newTranslateAnimation(ENDSTART_X-20,ENDSTART_X-20,endY+10,endY+10);//图片转移imageview.startAnimation(translationAnimation);开始动画置
3.TranslateAnimation(floatfromXDelta,floattoXDelta,floatfromYDelta,floattoYDelta)(位置变化动画)
4.获取屏幕长宽:
WindowManagerwindowManager=getWindowManager();
Displaydisplay=windowManager.getDefaultDisplay();
screenWidth=display.getWidth();
screenHeight=display.getHeight();
5.FrameLayout是最简单的一个布局对象。
它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象—比如,一张你要发布的图片。
所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。
后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。
原来可以利用android:
layout_gravity来设置位置的:
2011/12/3
6.在android屏幕中实现Button在固定区域拖动:
只要将用户的handleActionUp,handleActionDownhandleActionmove,中的处理过程前面加上一个条件判断,看是否用户点击的屏幕上坐标是否在所规定的范围内,若在则执行下面的处理工作否则不执行。
Apk包的安装与卸载
方法1:
——————————首先安装————————
一:
首先需要启动模拟器
二:
start->运行->CMD
三:
进入andoridsdk下面的tools目录
四:
adbinstallc:
\*.apk(说明:
“c:
\*.apk”是要安装的文件的路径)
这样就安装成功了!
——————————卸载————————
一:
首先需要启动模拟器
二:
start->运行->CMD
三:
进入andoridsdk下面的tools目录
四:
adbshell(按回车跳一行出现#在#后空一格输入cddata按回车下面方法一样)
五:
cddata
六:
cdapp
七:
ls(说明,主要是针对不知道包下面的文件,可以列表显示出来)
八:
rm*.apk(说明:
"*.apk"是你要卸载的apk包)
这样就可以卸载这个apk包了!
在DOS中查看模拟器中创建的数据库信息
首先进入Dos进入androidsdktools目录下输入
Adbshell
出现#
输入cddata
输入cddata
ls–l
用cd包名进入着自己所创建的包
再ls
出现databases与lib
输入cddatabases
Ls出现数据库名例如long_db
继而输入sqlite3long_db
输入.schema查看表结构
Select*from表名;
2011年12月3日星期六
关于在闹钟设置中屏幕上同时显示多个Button的操作总结:
1.实现用户在灰色区域内点击,即弹出一个显示点击处对应的时间button,并且当用户多次点击灰色区域继而弹出多个button(每次点击灰色区域就在点击处弹出),对于弹出的button都能够被用户拖动,并且被拖动的button不会影响其他的button,即button之间具有一定的独立性。
而且它们之间又有共同点。
共同点在于这些button都是从同一个ButtonActivity类中继承过来的。
2.Button是继承textView的对象。
只是在textview的基础上增添了一个风格style属性
3.ButtonActivity类是用户自定义的一个类,这个类是继承库函数中的Button方法的,而ButtonActivity中的具体内容则是创建一个button的监听器实现方法,当在主函数中实例化一个ButtonActivity对象后就在其后紧跟着就要设置监听器,监听器的设置则是调用ButtonActivity实例化对象中的一个监听器实现方法,这个方法就是用户先前在ButtonActivity中定义的监听器实现方法。
代码如下:
主函数中的代码:
imageview=newImageView(this);
bt=newButtonActivity(this);//实例化一个button对象
bt.ButtonListener(bt,imageview);//调用用户自定义的button里的监听器方法
用户自定义ButtonActivity中的方法
packagecom.djhs;
importandroid.content.Context;
importandroid.util.DisplayMetrics;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.View.OnTouchListener;
importandroid.widget.AbsoluteLayout;
importandroid.widget.Button;
importandroid.widget.FrameLayout;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.TextView;
importandroid.widget.AbsoluteLayout.LayoutParams;
publicclassButtonActivityextendsButtonimplementsOnTouchListener{
privatefinalStringLOG="MainViewInformation";
//privateButtonbt;
//privateImageViewimageview=null;
privateLinearLayoutmain_layout;
privateFrameLayoutframe_layout;
privateintstartY;
privateintendX;
privateintendY;
intlastX,lastY;
intwidth=0;//屏幕的宽度
publicButtonActivity(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
//TODOAuto-generatedmethodstub
returnfalse;
}
publicvoidButtonListener(ButtonActivityv,finalImageVieww){
//用户自定义的监听器方法
DisplayMetricsdm=getResources().getDisplayMetrics();//getthescreenwidthandheight
finalintscreenWidth=dm.widthPixels;
finalintscreenHeight=dm.heightPixels;
Log.i(LOG,"screenWidth----"+screenWidth);
Log.i(LOG,"screenHeight----"+screenHeight);
finalintWidth=screenWidth;
width=Width;
finaldoublehour=screenHeight/24.0;//将屏幕高度转化成时间
finaldoubleminute=hour/60.0;
v.setOnTouchListener(newOnTouchListener(){//thebuttonactionlistener;
publicbooleanonTouch(Viewv,MotionEventevent){
//TODOAuto-generatedmethodstub
intea=event.getAction();
Log.i("TAG","Touch:
"+ea);
switch(ea){
caseMotionEvent.ACTION_DOWN:
lastX=(int)event.getRawX();//获取触摸事件触摸位置的原始X坐标
lastY=(int)event.getRawY();
break;
caseMotionEvent.ACTION_MOVE:
intdx=(int)event.getRawX()-lastX;
intdy=(int)event.getRawY()-lastY;
intl=v.getLeft();//+dx;//fixedthexcoordinate
intb=v.getBottom()+dy;
intr=v.getRight();//+dx;//fixedtheycoordinate
intt=v.getTop()+dy;
//下面判断移动是否超出屏幕
if(l<0){
l=0;
r=l+v.getWidth();
}
if(t<-25){
t=0;
b=t+v.getHeight();
}
if(r>screenWidth){
r=screenWidth;
l=r-v.getWidth();
}
if(b>screenHeight+25){
b=(int)screenHeight;
t=b-v.getHeight();
}
v.layout(l,t,r,b);//showthebuutononthescreen
LayoutParamslayout_para=null;
layout_para=newLayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
(int)(screenWidth*(6/10.0)),(int)t);
lastX=(int)event.getRawX();
lastY=(int)event.getRawY();
v.setLayoutParams(layout_para);
if(dy>0){//button向下滑动时
finalinthours=(int)((t+(screenWidth*(3/28.0)))/hour);
finalintmin=(int)(((t+(screenWidth*(3/28.0)))%hour)/minute);
if(min<10)
{
if((t+(screenWidth*(3/28.0))){//判断是否已超出屏幕高度
((TextView)v).setText("时钟"+hours+":
"+0+min);//分钟小于10前面显示加0设置button上的内容
}
else
{
((TextView)v).setText("时钟"+0+":
"+0+0);
}
}
else
{
((TextView)v).setText("时钟"+hours+":
"+min);
}
}
else//button向上滑动时
{
finalinthours=(int)((t+screenWidth*(1/28.0))/hour);
finalintmin=(int)(((t+screenWidth*(1/28.0))%hour)/minute);
if(min<10)
{
if(t>0)
{//判断是否已超出屏幕高度
((TextView)v).setText("时钟"+hours+":
"+0+min);//分钟小于10前面显示加0
}
else
{
((TextView)v).setText("时钟"+0+":
"+0+0);
}
}
else{
((TextView)v).setText("时钟"+hours+":
"+min);
}
}
if(dy>0)//button向下滑动时箭头位置向下看齐
{
layout_para=newAbsoluteLayout.LayoutParams((int)(screenWidth*(1/13.0)),(int)(screenWidth*(1/13.0)),(int)((int)(width*(6/10.0))-width*(1/12.0)),(int)(t+screenWidth*(1/14.0)));
w.setLayoutParams(layout_para);
}
else//button向上滑动时箭头位置向上看齐
{
layout_para=newAbsoluteLayout.LayoutParams((int)(screenWidth*(1/13.0)),(int)(screenWidth*(1/13.0)),(int)((int)(width*(6/10.0))-width*(1/12.0)),(int)t);
w.setLayoutParams(layout_para);
}
w.setImageResource(R.drawable.path);
v.postInvalidate();
break;
caseMotionEvent.ACTION_UP:
break;
}
returnfalse;
}
});
}
}
2011年12月6日星期二
此说明为解释如何在android手机屏幕上显示gif格式的图片
在Android中是不支持直接使用Gif图片关联播放帧动画
必须将gif格式的图片用软件将其拆分为多个图片通过AnimationDrawable进行逐帧连续播放
1.实现此功能的程序在picture文件中;
2.将picture中的res文件中的anim文件拷到对应的工程中
3.anim文件中有一个anim.xml文件其中item中由上到下是图片的播放顺序而图片则存放在drawble文件中
anim.xml内容如下:
xmlversion="1.0"encoding="UTF-8"?
>
oneshot="false"
xmlns:
android="
duration="150"android:
drawable="@drawable/xiu0"/>
duration="150"android:
drawable="@drawable/xiu1"/>
duration="150"android:
drawable="@drawable/yte"/>
duration="150"android:
drawable="@drawable/yte"/>
duration="150"android:
drawable="@drawable/yte"/>
4.main.xml中的进行相应的修改即可内容如下:
android="
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
android:
orientation="vertical">
android:
id="@+id/prograssbar01"
style="@style/animStyle"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
/>
5.在valuse文件中新建一个style.xml文件将其内容复制到对应的文件下即可。
xmlversion="1.0"encoding="utf-8"?
>
style/Widget.ProgressBar.Large">
indeterminateDrawable">@anim/anim
android平台sd卡进行文件的读写:
1.首先介绍大概步骤首先是在用户自建的android工程(工程名如Filewriteread)中修改Filewriteread/AndroidManifest.xml中的内容修改后的结果如下:
xmlversion="1.0"encoding="utf-8"?
>
android="
package="com.dd.aa"
android:
versionCode="1"
android:
versionName="1.0">
name="android.permission.WRITE_EXTERNAL_STORAGE"/>
name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
minSdkVersion="8"/>
android:
icon="@drawable/ic_launcher"
android:
label="@string/app_name">
android:
label="@string/app_name"
android:
name=".FilewriteandreadActivity">
name="android.permission.WRITE_EXTERNAL_STORAGE"/>
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
2.在如下目录中创建Filewriteread/FilewritereadActivity.java文件内容如下:
packagecom.dd.aa;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
publicclassFilewriteandreadActivityextendsActivity{
privateTextViewreadFileTextView;
privateButtonback=null;
privateFileHelperhelper;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.filewriteread);
readFileTextView=(TextView)findViewById(R.id.readFileTextView);
back=(Button)