بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
اجرا نشدن متد onDraw در Image Slider
کدهای من به این شکله:
ImagePagerAdapter:
package adapters;
import globals.G;
import java.util.ArrayList;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.emaarit.sarak.R;
public class ImagePagerAdapter extends PagerAdapter{
private ArrayList<Integer> array;
public ImagePagerAdapter(ArrayList<Integer> array){
this.array = array;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return array.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
// TODO Auto-generated method stub
return view.equals(object );
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
View view = G.appConfigs.lInflater.inflate(R.layout.sample, null);
ImageView imgSlider = (ImageView) view.findViewById(R.id.img_slider_slideradapter);
imgSlider.setImageResource(array.get(position));
Log.i("Log", "PositionID Is: " + position);
Log.i("Log", "array.size() Is: " + array.size());
if(position == (array.size() - 1)){
// Return to First
Log.i("Log", "Last IndexPosition Is: " + position);
}
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View) object);
}
}
PageIndicator:
package indicator;
import helpers.UIHelper;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageView;
public class PageIndicator extends ImageView{
private Paint fillPaint, strockPaint ;
private int count;
private int indicatorWidth;
private int currentPageIndex = 0;
private float circleX = 0;
private float circleY = 0;
private static final int CIRCLE_RADIUS = 10;
private static final int CIRCLE_SPACE = 15;
private float offsetX;
private float percent;
public PageIndicator(Context context) {
super(context);
// TODO Auto-generated constructor stub
initialize();
}
public PageIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
initialize();
}
public PageIndicator(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
initialize();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
circleY = (float) (UIHelper.width * 0.0365);
for(int i=0; i < count; i ++){
Log.i("Log2", "Current Page: " + currentPageIndex + " i: " + i);
Paint paint = strockPaint;
if(i == currentPageIndex){
paint = fillPaint;
}
circleX = offsetX + i * (CIRCLE_RADIUS + CIRCLE_SPACE);
Log.i("Log", "circleY Is: " + circleY);
canvas.drawCircle(circleX, circleY, CIRCLE_RADIUS, paint);
canvas.drawCircle(circleX, circleY, CIRCLE_RADIUS, paint);
}
}
public void setIndicatorsCount(int value){
count = value;
computeIndicatorWidth();
}
private void computeIndicatorWidth(){
indicatorWidth = count * (CIRCLE_RADIUS + CIRCLE_SPACE);
offsetX = (UIHelper.width - indicatorWidth) / 2;
}
public void setCurrentPage(int value){
currentPageIndex = value;
}
/*
public void setPercent(float percent){
this.percent = percent;
}
*/
private void initialize(){
fillPaint = new Paint();
fillPaint.setStyle(Style.FILL);
fillPaint.setColor(Color.GREEN);
fillPaint.setAntiAlias(true);
strockPaint = new Paint();
strockPaint.setStyle(Style.STROKE);
strockPaint.setColor(Color.GREEN);
strockPaint.setAntiAlias(true);
}
}
و در اکتیویتی:
private void ImageSlider(){
// ArrayList<StructPagerItem> pagerImages = new ArrayList<StructPagerItem>();
// StructPagerItem pagerImage = new StructPagerItem();
// pagerImages.add(object)
ArrayList<Integer> pagerImages = new ArrayList<Integer>();
pagerImages.add(R.drawable.slider_0);
pagerImages.add(R.drawable.slider_1);
pagerImages.add(R.drawable.slider_2);
pagerImages.add(R.drawable.slider_3);
// ========== Set Circle Drawing
final PageIndicator indicator = (PageIndicator) findViewById(R.id.PageIndicator1);
indicator.setIndicatorsCount(pagerImages.size());
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int index) {
// TODO Auto-generated method stub
indicator.setCurrentPage(index);
Log.i("Log2", "You Are On Slide " + index);
}
@Override
public void onPageScrolled(int startIndex, float percent, int pixel) {
// TODO Auto-generated method stub
// indicator.setPercent(percent);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
ImagePagerAdapter adapter = new ImagePagerAdapter(pagerImages);
pager.setAdapter(adapter);
}
و خروجی لاگ کت بعداز اسلاید به آخرین تصویر:
08-10 18:20:50.953: I/Log2(3246): Current Page: 0 i: 0 08-10 18:20:50.960: I/Log2(3246): Current Page: 0 i: 1 08-10 18:20:50.960: I/Log2(3246): Current Page: 0 i: 2 08-10 18:20:50.960: I/Log2(3246): Current Page: 0 i: 3 08-10 18:21:06.023: I/Log2(3246): You Are On Slide 1 08-10 18:21:06.476: I/Log2(3246): You Are On Slide 2 08-10 18:21:06.914: I/Log2(3246): You Are On Slide 3 08-10 18:21:10.609: I/Log2(3246): You Are On Slide 2 08-10 18:21:10.929: I/Log2(3246): You Are On Slide 1 08-10 18:21:11.281: I/Log2(3246): You Are On Slide 0
مسئله اینه که تصویر با درگ کردن عوض می شه اما Circle ها آپدیت نمی شن و onDraw فقط یک بار اجرا می شه
0
0
!!! (12 سال پیش)
0
0
یعنی یک نفر به این مشکل بر نخورده؟ (12 سال پیش)
0
0
یه متدی هست که استاد استفاده کرد ، شاید اونو صدا نزدین! invalidate(); (11 سال پیش)
0
0
کجا فراخوانی شده (11 سال پیش)
0
0
یادم نیست کدوم قسمت آموزشا بود ، فکر کنم تو متد onDraw (11 سال پیش)
0
0
من توی سمپل استاد این متد رو ندیدم!!! (11 سال پیش)
0
0
ببخشید :| ولی یجایی دیدم معلوم نیست کجاس! (11 سال پیش)
0
0
این مشکل منم هست؛لطفا راهنمایی کنید دوستان (11 سال پیش)
0
0
زمانی که اسلاید می زنی بعدب از دستور pager.invalidate استفاده کن (11 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .