Thursday 15 July 2010

android - how to Display one image View over another? -



android - how to Display one image View over another? -

i have xml file 2 image views.the first image view shows image fills screen.when touch screen want sec imageview appear @ location.how can accomplish this?im using framelayout , trying set co-ordinates of sec imageview during ontouch event keeps throwing error.

my xml file

<?xml version="1.0" encoding="utf-8"?> <framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" > <imageview android:id="@+id/singleview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaletype="fitxy" /> <imageview android:id="@+id/touch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/lock" android:visibility="gone" /> </framelayout>

my java file

public class singleviewactivity extends activity { int position; string[] imageurls; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.single_view); file path = getexternalfilesdir(null); constants cons = new constants(); imageurls = cons.getimagepath(path.tostring()); // intent info intent = getintent(); // selected image id position = i.getextras().getint("position", -1); imageview imageview = (imageview) findviewbyid(r.id.singleview); imageloader imageloader = imageloader.getinstance(); imageloader.displayimage("file://" + imageurls[position], imageview); } @suppresswarnings("deprecation") public boolean ontouchevent(motionevent event) { // motionevent object holds x-y values if (event.getaction() == motionevent.action_down) { final int xcood = (int) event.getx(); final int ycood = (int) event.gety(); imageview touch = (imageview) findviewbyid(r.id.touch); touch.setlayoutparams(new absolutelayout.layoutparams( layoutparams.wrap_content, layoutparams.wrap_content, xcood, ycood)); touch.setvisibility(view.visible); } homecoming false; } }

logcat

11-08 17:23:48.950: e/androidruntime(1681): fatal exception: main 11-08 17:23:48.950: e/androidruntime(1681): process: com.p3authentication, pid: 1681 11-08 17:23:48.950: e/androidruntime(1681): java.lang.classcastexception: android.widget.absolutelayout$layoutparams cannot cast android.view.viewgroup$marginlayoutparams 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5116) 11-08 17:23:48.950: e/androidruntime(1681): @ android.widget.framelayout.onmeasure(framelayout.java:310) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.view.measure(view.java:16521) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5125) 11-08 17:23:48.950: e/androidruntime(1681): @ android.widget.framelayout.onmeasure(framelayout.java:310) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.view.measure(view.java:16521) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5125) 11-08 17:23:48.950: e/androidruntime(1681): @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1404) 11-08 17:23:48.950: e/androidruntime(1681): @ android.widget.linearlayout.measurevertical(linearlayout.java:695) 11-08 17:23:48.950: e/androidruntime(1681): @ android.widget.linearlayout.onmeasure(linearlayout.java:588) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.view.measure(view.java:16521) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5125) 11-08 17:23:48.950: e/androidruntime(1681): @ android.widget.framelayout.onmeasure(framelayout.java:310) 11-08 17:23:48.950: e/androidruntime(1681): @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:2552) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.view.measure(view.java:16521) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewrootimpl.performmeasure(viewrootimpl.java:1915) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1109) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1291) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:996) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5603) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.choreographer$callbackrecord.run(choreographer.java:761) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.choreographer.docallbacks(choreographer.java:574) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.choreographer.doframe(choreographer.java:544) 11-08 17:23:48.950: e/androidruntime(1681): @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:747) 11-08 17:23:48.950: e/androidruntime(1681): @ android.os.handler.handlecallback(handler.java:733) 11-08 17:23:48.950: e/androidruntime(1681): @ android.os.handler.dispatchmessage(handler.java:95) 11-08 17:23:48.950: e/androidruntime(1681): @ android.os.looper.loop(looper.java:136) 11-08 17:23:48.950: e/androidruntime(1681): @ android.app.activitythread.main(activitythread.java:5146) 11-08 17:23:48.950: e/androidruntime(1681): @ java.lang.reflect.method.invokenative(native method) 11-08 17:23:48.950: e/androidruntime(1681): @ java.lang.reflect.method.invoke(method.java:515) 11-08 17:23:48.950: e/androidruntime(1681): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:732) 11-08 17:23:48.950: e/androidruntime(1681): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:566) 11-08 17:23:48.950: e/androidruntime(1681): @ dalvik.system.nativestart.main(native method)

imageview parent layout framelayout have initialize framelayout layoutparams , set left , top margin layoutparams x , y cordinate after set layoutparams sec imageview shown sec imageview @ touch position :

framelayout.layoutparams params = new framelayout.layoutparams(framelayout.layoutparams.wrap_content,framelayout.layoutparams.wrap_content); params.leftmargin = (int) event.getx(); params.topmargin = (int) event.gety(); touch.setlayoutparams(params);

formmated code :

public class singleviewactivity extends activity { private int position; private string[] imageurls; private imageview imageview; private imageview touch; private imageloader imageloader; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); getwindow().setflags(windowmanager.layoutparams.flag_fullscreen,windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.single_view); imageview = (imageview) findviewbyid(r.id.singleview); touch = (imageview) findviewbyid(r.id.touch); file path = getexternalfilesdir(null); constants cons = new constants(); imageurls = cons.getimagepath(path.tostring()); // intent info intent = getintent(); // selected image id position = i.getextras().getint("position", -1); imageloader = imageloader.getinstance(); imageloader.displayimage("file://" + imageurls[position], imageview); imageview.setontouchlistener(new view.ontouchlistener() { @override public boolean ontouch(view v, motionevent event) { if (event.getaction() == motionevent.action_down) { framelayout.layoutparams params = new framelayout.layoutparams(framelayout.layoutparams.wrap_content,framelayout.layoutparams.wrap_content); params.leftmargin = (int) event.getx(); params.topmargin = (int) event.gety(); touch.setlayoutparams(params); touch.setvisibility(view.visible); } homecoming false; } }); } }

android imageview framelayout

No comments:

Post a Comment