Hi
In my project if the user clicks an icon , it will display a popup imageview with scrolling function.
my problem is, the pop image should be high resolution, and it should be adjustable for all type of android screen resolution.
when user clicks the icon , the image shoud be adjustable depond upon their fone models or screen size..
my xml code-
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:removed="@drawable/pop_up_people"
android:orientation="vertical" >
<linearlayout> android:id="@+id/lin_scroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:layout_marginTop="40dp"
android:orientation="vertical" >
<scrollview>
android:id="@+id/scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dip"
android:fadingEdgeLength="5dip" >
<linearlayout> android:id="@+id/tracks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:paddingBottom="4dip"
android:paddingTop="4dip" />
<ImageView
android:id="@+id/arrow_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow_up"
android:visibility="gone" />
<ImageView
android:id="@+id/arrow_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lin_scroll"
android:layout_marginTop="-4dip"
android:src="@drawable/arrow_down"
android:visibility="gone" />
Activity file--
package com.fipl.quickaction;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.ImageView;
import android.widget.PopupWindow.OnDismissListener;
import android.widget.TextView;
import com.fipl.mouthy.R;
import com.parser.mouthy.ImageLoader1;
public class QuickAction extends PopupWindows implements OnDismissListener {
private ImageView mArrowUp;
private ImageView mArrowDown;
private Animation mTrackAnim;
private LayoutInflater inflater;
private ViewGroup mTrack;
private OnActionItemClickListener mItemClickListener;
private OnDismissListener mDismissListener;
private List<actionitem> mActionItemList = new ArrayList<actionitem>();
private boolean mDidAction;
private boolean mAnimateTrack;
private int mChildPos;
private int mAnimStyle;
private Context ctx;
public static final int ANIM_GROW_FROM_LEFT = 1;
public static final int ANIM_GROW_FROM_RIGHT = 2;
public static final int ANIM_GROW_FROM_CENTER = 3;
public static final int ANIM_AUTO = 4;
public QuickAction(Context context) {
super(context);
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mTrackAnim = AnimationUtils.loadAnimation(context, R.anim.rail);
ctx = context;
mTrackAnim.setInterpolator(new Interpolator() {
public float getInterpolation(float t) {
// Pushes past the target area, then snaps back into place.
// Equation for graphing: 1.2-((x*1.6)-1.1)^2
final float inner = (t * 1.55f) - 1.1f;
return 1.2f - inner * inner;
}
});
setRootViewId(R.layout.quickaction);
mAnimStyle = ANIM_AUTO;
mAnimateTrack = true;
mChildPos = 0;
}
public ActionItem getActionItem(int index) {
return mActionItemList.get(index);
}
public void setRootViewId(int id) {
mRootView = (ViewGroup) inflater.inflate(id, null);
mTrack = (ViewGroup) mRootView.findViewById(R.id.tracks);
mArrowDown = (ImageView) mRootView.findViewById(R.id.arrow_down);
mArrowUp = (ImageView) mRootView.findViewById(R.id.arrow_up);
// This was previously defined on show() method, moved here to prevent
// force close that occured
// when tapping fastly on a view to show quickaction dialog.
// Thanx to zammbi (github.com/zammbi)
mRootView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
setContentView(mRootView);
}
public void mAnimateTrack(boolean mAnimateTrack) {
this.mAnimateTrack = mAnimateTrack;
}
public void setAnimStyle(int mAnimStyle) {
this.mAnimStyle = mAnimStyle;
}
public void addActionItem(ActionItem action) {
mActionItemList.add(action);
String title = action.getTitle();
Drawable icon = action.getIcon();
String image = action.getImage_path();
View container = (View) inflater.inflate(R.layout.action_item, null);
ImageView img = (ImageView) container.findViewById(R.id.iv_icon);
TextView text = (TextView) container.findViewById(R.id.tv_title);
// if (icon != null) {
// img.setImageDrawable(icon);
if (!image.equals("")) {
ImageLoader1 loader = new ImageLoader1(img, ctx);
loader.execute(image);
} else {
img.setVisibility(View.INVISIBLE);
}
// } else {
// img.setVisibility(View.GONE);
// }
if (title != null) {
text.setText(title);
} else {
text.setVisibility(View.GONE);
}
final int pos = mChildPos;
final int actionId = action.getActionId();
container.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(QuickAction.this, pos,
actionId);
}
if (!getActionItem(pos).isSticky()) {
mDidAction = true;
// workaround for transparent background bug
// thx to Roman Wozniak <roman.wozniak@gmail.com>
v.post(new Runnable() {
public void run() {
dismiss();
}
});
}
}
});
container.setFocusable(true);
container.setClickable(true);
mTrack.addView(container, mChildPos + 1);
mChildPos++;
}
public void setOnActionItemClickListener(OnActionItemClickListener listener) {
mItemClickListener = listener;
}
public void show(View anchor) {
preShow();
int[] location = new int[2];
mDidAction = false;
anchor.getLocationOnScreen(location);
Rect anchorRect = new Rect(location[0], location[1], location[0]
+ anchor.getWidth(), location[1] + anchor.getHeight());
// mRootView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
// LayoutParams.WRAP_CONTENT));
mRootView.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int rootWidth = mRootView.getMeasuredWidth();
int rootHeight = mRootView.getMeasuredHeight();
int screenWidth = mWindowManager.getDefaultDisplay().getWidth();
// int screenHeight = mWindowManager.getDefaultDisplay().getHeight();
int xPos = (screenWidth - rootWidth) / 2;
int yPos = anchorRect.top - rootHeight;
boolean onTop = true;
// display on bottom
if (rootHeight > anchor.getTop()) {
yPos = anchorRect.bottom;
onTop = false;
}
showArrow(((onTop) ? R.id.arrow_down : R.id.arrow_up),
anchorRect.centerX());
setAnimationStyle(screenWidth, anchorRect.centerX(), onTop);
mWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, xPos, yPos);
if (mAnimateTrack)
mTrack.startAnimation(mTrackAnim);
}
private void setAnimationStyle(int screenWidth, int requestedX,
boolean onTop) {
int arrowPos = requestedX - mArrowUp.getMeasuredWidth() / 2;
switch (mAnimStyle) {
case ANIM_GROW_FROM_LEFT:
mWindow.setAnimationStyle((onTop) ? R.style.Animations_PopUpMenu_Left
: R.style.Animations_PopDownMenu_Left);
break;
case ANIM_GROW_FROM_RIGHT:
mWindow.setAnimationStyle((onTop) ? R.style.Animations_PopUpMenu_Right
: R.style.Animations_PopDownMenu_Right);
break;
case ANIM_GROW_FROM_CENTER:
mWindow.setAnimationStyle((onTop) ? R.style.Animations_PopUpMenu_Center
: R.style.Animations_PopDownMenu_Center);
break;
case ANIM_AUTO:
if (arrowPos <= screenWidth / 4) {
mWindow.setAnimationStyle((onTop) ? R.style.Animations_PopUpMenu_Left
: R.style.Animations_PopDownMenu_Left);
} else if (arrowPos > screenWidth / 4
&& arrowPos < 3 * (screenWidth / 4)) {
mWindow.setAnimationStyle((onTop) ? R.style.Animations_PopUpMenu_Center
: R.style.Animations_PopDownMenu_Center);
} else {
mWindow.setAnimationStyle((onTop) ? R.style.Animations_PopDownMenu_Right
: R.style.Animations_PopDownMenu_Right);
}
break;
}
}
private void showArrow(int whichArrow, int requestedX) {
final View showArrow = (whichArrow == R.id.arrow_up) ? mArrowUp
: mArrowDown;
final View hideArrow = (whichArrow == R.id.arrow_up) ? mArrowDown
: mArrowUp;
final int arrowWidth = mArrowUp.getMeasuredWidth();
showArrow.setVisibility(View.GONE);
ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) showArrow
.getLayoutParams();
param.leftMargin = requestedX - arrowWidth / 2;
hideArrow.setVisibility(View.INVISIBLE);
}
public void setOnDismissListener(QuickAction.OnDismissListener listener) {
setOnDismissListener(this);
mDismissListener = listener;
}
@Override
public void onDismiss() {
if (!mDidAction && mDismissListener != null) {
mDismissListener.onDismiss();
}
}
public interface OnActionItemClickListener {
public abstract void onItemClick(QuickAction source, int pos,
int actionId);
}
public interface OnDismissListener {
public abstract void onDismiss();
}
}
kindly guide me..
Thanks in advance..