behnam.14
دوشنبه 28 اردیبهشت 1394, 21:55 عصر
سلام من ی مشکلی دارم
من میخوام یک عکس تعریف کنم که اگه روش کلیک کنی با بشه یعنی یک صفحه دیگر بیاد و عکس رو به طور کامل نشون بده کسی بلده به منم یاد بده
dalmif
دوشنبه 28 اردیبهشت 1394, 22:17 عصر
سلام دوست عزیز.
خسته نباشید.
ببینیید شما یه اکتیویتی بسازید و در اون یه ایمیج ویو ست کنید بعد روی عکس که کلیک شد آدرس تصویر (اگه توی فایل Drawable هست) رو با putExtra به صفحه جدید بفرستید و بعد در اون صفحه اون آدرس رو بدید به ایمیج ویو.
همین.
اگه کد هاش رو ندارید بگید تا خدمتتون بدم:لبخندساده:
یا علی مدد
behnam.14
سه شنبه 29 اردیبهشت 1394, 09:51 صبح
سلام من کد هاشو ميخواستم دیگ دادا
JYasProgramer
سه شنبه 29 اردیبهشت 1394, 16:31 عصر
سلام دوست من
من کتابخانه ای رو واست قرار می دم که علاوه بر موضوعی که می گی موضوعات دیگه ای هم داشته باشه
public class ZoomActivity extends FragmentActivity {
/**
* Hold a reference to the current animator, so that it can be canceled mid-way.
*/
private Animator mCurrentAnimator;
/**
* The system "short" animation time duration, in milliseconds. This duration is ideal for
* subtle animations or animations that occur very frequently.
*/
private int mShortAnimationDuration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zoom);
// Hook up clicks on the thumbnail views.
final View thumb1View = findViewById(R.id.thumb_button_1);
thumb1View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
zoomImageFromThumb(thumb1View, R.drawable.image1);
}
});
final View thumb2View = findViewById(R.id.thumb_button_2);
thumb2View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
zoomImageFromThumb(thumb2View, R.drawable.image2);
}
});
// Retrieve and cache the system's default "short" animation time.
mShortAnimationDuration = getResources().getInteger(android.R.integer.config _shortAnimTime);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// Navigate "up" the demo structure to the launchpad activity.
// See http://developer.android.com/design/patterns/navigation.html for more.
NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* "Zooms" in a thumbnail view by assigning the high resolution image to a hidden "zoomed-in"
* image view and animating its bounds to fit the entire activity content area. More
* specifically:
*
* <ol>
* <li>Assign the high-res image to the hidden "zoomed-in" (expanded) image view.</li>
* <li>Calculate the starting and ending bounds for the expanded view.</li>
* <li>Animate each of four positioning/sizing properties (X, Y, SCALE_X, SCALE_Y)
* simultaneously, from the starting bounds to the ending bounds.</li>
* <li>Zoom back out by running the reverse animation on click.</li>
* </ol>
*
* @param thumbView The thumbnail view to zoom in.
* @param imageResId The high-resolution version of the image represented by the thumbnail.
*/
private void zoomImageFromThumb(final View thumbView, int imageResId) {
// If there's an animation in progress, cancel it immediately and proceed with this one.
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
// Load the high-resolution "zoomed-in" image.
final ImageView expandedImageView = (ImageView) findViewById(R.id.expanded_image);
expandedImageView.setImageResource(imageResId);
// Calculate the starting and ending bounds for the zoomed-in image. This step
// involves lots of math. Yay, math.
final Rect startBounds = new Rect();
final Rect finalBounds = new Rect();
final Point globalOffset = new Point();
// The start bounds are the global visible rectangle of the thumbnail, and the
// final bounds are the global visible rectangle of the container view. Also
// set the container view's offset as the origin for the bounds, since that's
// the origin for the positioning animation properties (X, Y).
thumbView.getGlobalVisibleRect(startBounds);
findViewById(R.id.container).getGlobalVisibleRect( finalBounds, globalOffset);
startBounds.offset(-globalOffset.x, -globalOffset.y);
finalBounds.offset(-globalOffset.x, -globalOffset.y);
// Adjust the start bounds to be the same aspect ratio as the final bounds using the
// "center crop" technique. This prevents undesirable stretching during the animation.
// Also calculate the start scaling factor (the end scaling factor is always 1.0).
float startScale;
if ((float) finalBounds.width() / finalBounds.height()
> (float) startBounds.width() / startBounds.height()) {
// Extend start bounds horizontally
startScale = (float) startBounds.height() / finalBounds.height();
float startWidth = startScale * finalBounds.width();
float deltaWidth = (startWidth - startBounds.width()) / 2;
startBounds.left -= deltaWidth;
startBounds.right += deltaWidth;
} else {
// Extend start bounds vertically
startScale = (float) startBounds.width() / finalBounds.width();
float startHeight = startScale * finalBounds.height();
float deltaHeight = (startHeight - startBounds.height()) / 2;
startBounds.top -= deltaHeight;
startBounds.bottom += deltaHeight;
}
// Hide the thumbnail and show the zoomed-in view. When the animation begins,
// it will position the zoomed-in view in the place of the thumbnail.
thumbView.setAlpha(0f);
expandedImageView.setVisibility(View.VISIBLE);
// Set the pivot point for SCALE_X and SCALE_Y transformations to the top-left corner of
// the zoomed-in view (the default is the center of the view).
expandedImageView.setPivotX(0f);
expandedImageView.setPivotY(0f);
// Construct and run the parallel animation of the four translation and scale properties
// (X, Y, SCALE_X, and SCALE_Y).
AnimatorSet set = new AnimatorSet();
set
.play(ObjectAnimator.ofFloat(expandedImageView, View.X, startBounds.left,
finalBounds.left))
.with(ObjectAnimator.ofFloat(expandedImageView, View.Y, startBounds.top,
finalBounds.top))
.with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_X, startScale, 1f))
.with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_Y, startScale, 1f));
set.setDuration(mShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mCurrentAnimator = null;
}
@Override
public void onAnimationCancel(Animator animation) {
mCurrentAnimator = null;
}
});
set.start();
mCurrentAnimator = set;
// Upon clicking the zoomed-in image, it should zoom back down to the original bounds
// and show the thumbnail instead of the expanded image.
final float startScaleFinal = startScale;
expandedImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
// Animate the four positioning/sizing properties in parallel, back to their
// original values.
AnimatorSet set = new AnimatorSet();
set
.play(ObjectAnimator.ofFloat(expandedImageView, View.X, startBounds.left))
.with(ObjectAnimator.ofFloat(expandedImageView, View.Y, startBounds.top))
.with(ObjectAnimator
.ofFloat(expandedImageView, View.SCALE_X, startScaleFinal))
.with(ObjectAnimator
.ofFloat(expandedImageView, View.SCALE_Y, startScaleFinal));
set.setDuration(mShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
thumbView.setAlpha(1f);
expandedImageView.setVisibility(View.GONE);
mCurrentAnimator = null;
}
@Override
public void onAnimationCancel(Animator animation) {
thumbView.setAlpha(1f);
expandedImageView.setVisibility(View.GONE);
mCurrentAnimator = null;
}
});
set.start();
mCurrentAnimator = set;
}
});
}
}
xml مربوط به این اکتیویتی
<!--
Copyright 2012 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView style="?android:textAppearanceSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_zoom_touch_expand" />
<!-- This is an example layout containing thumbnail image buttons that, when pressed,
zoom in to show more detail. All of the zooming and animation logic is in
the ZoomActivity class. -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<!-- These buttons don't have any decorations (3D bevel, etc.), but it's still
important to show feedback on touch or focus. The custom
"ToughHighlightImageButton" ImageButton subclass helps achieve this by drawing
the standard system "pressed" and "focused" overlay upon user interaction. -->
<com.example.android.animationsdemo.TouchHighlightI mageButton
android:id="@+id/thumb_button_1"
android:layout_width="100dp"
android:layout_height="75dp"
android:layout_marginRight="1dp"
android:src="@drawable/thumb1"
android:scaleType="centerCrop"
android:contentDescription="@string/description_image_1" />
<com.example.android.animationsdemo.TouchHighlightI mageButton
android:id="@+id/thumb_button_2"
android:layout_width="100dp"
android:layout_height="75dp"
android:src="@drawable/thumb2"
android:scaleType="centerCrop"
android:contentDescription="@string/description_image_2" />
</LinearLayout>
</LinearLayout>
<!-- This initially-hidden ImageView will hold the expanded/zoomed version of the
images above. Without transformations applied, it takes up the entire screen.
To achieve the "zoom" animation, this view's bounds are animated from the
bounds of the thumbnail buttons above, to its final laid-out bounds. The implementation
of this animation is in the ZoomActivity class. -->
<ImageView
android:id="@+id/expanded_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
android:contentDescription="@string/description_zoom_touch_close" />
</FrameLayout>
کتابخانه مربوط به این xml در خطوط 46 و 55
public class TouchHighlightImageButton extends ImageButton {
/**
* The highlight drawable. This generally a {@link android.graphics.drawable.StateListDrawable}
* that's transparent in the default state, and contains a semi-transparent overlay
* for the focused and pressed states.
*/
private Drawable mForegroundDrawable;
/**
* The cached bounds of the view.
*/
private Rect mCachedBounds = new Rect();
public TouchHighlightImageButton(Context context) {
super(context);
init();
}
public TouchHighlightImageButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public TouchHighlightImageButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
/**
* General view initialization used common to all constructors of the view.
*/
private void init() {
// Reset default ImageButton background and padding.
setBackgroundColor(0);
setPadding(0, 0, 0, 0);
// Retrieve the drawable resource assigned to the android.R.attr.selectableItemBackground
// theme attribute from the current theme.
TypedArray a = getContext()
.obtainStyledAttributes(new int[]{android.R.attr.selectableItemBackground});
mForegroundDrawable = a.getDrawable(0);
mForegroundDrawable.setCallback(this);
a.recycle();
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
// Update the state of the highlight drawable to match
// the state of the button.
if (mForegroundDrawable.isStateful()) {
mForegroundDrawable.setState(getDrawableState());
}
// Trigger a redraw.
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
// First draw the image.
super.onDraw(canvas);
// Then draw the highlight on top of it. If the button is neither focused
// nor pressed, the drawable will be transparent, so just the image
// will be drawn.
mForegroundDrawable.setBounds(mCachedBounds);
mForegroundDrawable.draw(canvas);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// Cache the view bounds.
mCachedBounds.set(0, 0, w, h);
}
}
dalmif
سه شنبه 29 اردیبهشت 1394, 17:14 عصر
ممنون دوست عزیز
ولی از نظر من اصلا نیازی به این دنگ و فنگ ها نداره
اول توی همون صفحه اولیت یه لیسنر تعریف میکنی که اگه کلیک شد بر روی عکس کد زیر انجام بشه
Intent intent = new Intent(this, classDovom.class);
intent.putExtra("image", R.drawable.logo);
startActivity(intent);
بعد توی اکتویتی دوم میگیری و به شکل زیر ست می کنی.
getItent().getExtras().getString("image");
الان کد بالا همون آدرس تصویرت هست
.
متوجه شدید؟:لبخندساده:
.
یا علی مدد
JYasProgramer
سه شنبه 29 اردیبهشت 1394, 17:32 عصر
نیازی به آدرس نیست دوست عزیز در xml تصویر رو ست می کنی و از طریق کد اونو هدایت میکنی :لبخندساده:
behnam.14
سه شنبه 29 اردیبهشت 1394, 18:38 عصر
من که نفهميدم ی کم واضح تر بگید
JYasProgramer
چهارشنبه 30 اردیبهشت 1394, 08:52 صبح
کدی که من قرار دادم همراه با انیمیشنه
کدی که دوستمون قراردادن بدون انیمیشنه
هر کدومی خواستی امتحان کن سوالی بود بپرس
majid_7
چهارشنبه 30 اردیبهشت 1394, 20:32 عصر
سلام
متشکریم از پاسخ جامع و کامل تون جناب JYasProgramer (http://barnamenevis.org/member.php?355870-JYasProgramer)
ولی یه سوال ؟
بهتر نبود پروژه رو کامل یه جا آپلود میکردید و بعد آدرس میدادید؟
به نظرم اینطوری خیلی بهتر بود ...
البته با این مخالفم که لقمه ی آماده رو در اختیار بذاریم ولی دیگه شما که همه ی کد رو گذاشتید!! :لبخند:
واقعا دست تون درد نکنه.:لبخندساده:
JYasProgramer
یک شنبه 03 خرداد 1394, 19:08 عصر
majid_7 (http://barnamenevis.org/member.php?199507-majid_7) یه ایمیل بده واست بفرستم دوست من
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.