- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 AppCompact 21.0.3 编写应用程序
如何修复此错误,但我在代码中遇到 addonpagechangelistener 错误?
Faulty section:* pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener()
package com.mikepenz.unsplash.materialintro;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Space;
import android.widget.TextView;
import com.mikepenz.unsplash.R;
import java.util.ArrayList;
import java.util.List;
public abstract class MaterialIntroActivity extends ActionBarActivity {
//Pager
private IntroPagerAdapter mPagerAdapter;
private ViewPager pager;
private List<Fragment> fragments = new ArrayList<>();
private List<ImageView> dots;
//Config values
private int totalPagesNum;
private int currentPageNum;
private boolean showSkip = true;
private static int FIRST_PAGE_NUM = 0;
private float oldPositionOffset;
/* Abstract Methods */
protected abstract void init();
protected abstract void onSkipPressed();
protected abstract void onDonePressed();
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_material_intro);
if(getActionBar()!=null) getActionBar().hide();
final TextView skipButton = (TextView) findViewById(R.id.skip_button);
final ImageView nextButton = (ImageView) findViewById(R.id.next_button);
final TextView doneButton = (TextView) findViewById(R.id.done_button);
mPagerAdapter = new IntroPagerAdapter(getSupportFragmentManager(), fragments);
pager = (ViewPager) findViewById(R.id.view_pager);
pager.setAdapter(mPagerAdapter);
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
boolean directionNext = position > currentPageNum;
selectDot(currentPageNum, positionOffset, directionNext);
}
@Override
public void onPageSelected(int position) {
currentPageNum = position;
if (position == totalPagesNum - 1) {
nextButton.setVisibility(View.GONE);
doneButton.setVisibility(View.VISIBLE);
if (showSkip) skipButton.setVisibility(View.INVISIBLE);
} else {
nextButton.setVisibility(View.VISIBLE);
doneButton.setVisibility(View.GONE);
if (showSkip) skipButton.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//pager.setPageTransformer(false, new PageTransformer());
skipButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSkipPressed();
}
});
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onDonePressed();
}
});
nextButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
pager.setCurrentItem(pager.getCurrentItem() + 1);
}
});
init();
loadDots();
}
/* public class PageTransformer implements ViewPager.PageTransformer {
public void transformPage(View view, float position) {
if(position <= -1.0F || position >= 1.0F) {
selectDot(currentPageNum, 0.0F);
} else if( position == 0.0F ) {
selectDot(currentPageNum, 1.0F);
} else {
// position is between -1.0F & 0.0F OR 0.0F & 1.0F
//selectDot(currentPageNum, 1.0F - Math.abs(position));
selectDot(currentPageNum, 1.0F - Math.abs(position));
}
if(position>1)
Log.d("GGG", position + "");
}
}*/
private void selectDot(int index) {
selectDot(index, 0, true);
}
private void selectDot(int index, float positionOffset, boolean directionNext) {
Log.d("GGG", positionOffset + " Next " + directionNext);
float offset = positionOffset;
if(offset>1 || offset<=0){
offset = 1.0f;
} else {
offset = (offset/2) + 0.5f;
if(directionNext)
offset = (float) 1.5 - offset;
else
offset = (offset/2) + 0.5f;
}
Log.d("GGG", "NEW " + offset);
Log.d("GGG", "INDEX " + index);
for (int i = 0; i < fragments.size(); i++) {
if(index == i){
dots.get(i).setAlpha(offset);
} else {
dots.get(i).setAlpha(0.5F);
}
}
}
private void _selectDot(int index) {
Resources res = getResources();
for (int i = 0; i < fragments.size(); i++) {
int drawableId = (i == index) ? (R.drawable.indicator_dot_white) : (R.drawable.indicator_dot_grey);
Drawable drawable = res.getDrawable(drawableId);
dots.get(i).setImageDrawable(drawable);
}
}
private void loadDots() {
LinearLayout dotLayout = (LinearLayout) findViewById(R.id.dotLayout);
dots = new ArrayList<>();
totalPagesNum = fragments.size();
for (int i = 0; i < totalPagesNum; i++) {
ImageView dot = new ImageView(this);
dot.setImageDrawable(getResources().getDrawable(R.drawable.indicator_dot_white));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
dotLayout.addView(dot, params);
dots.add(dot);
}
selectDot(FIRST_PAGE_NUM);
}
private class IntroPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public IntroPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragments) {
super(fragmentManager);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
/* Config Methods */
public void addPage(Fragment fragment) {
fragments.add(fragment);
mPagerAdapter.notifyDataSetChanged();
}
public void setBarColor(int colorRes){
LinearLayout bottomBar = (LinearLayout) findViewById(R.id.bottom_container);
bottomBar.setBackgroundResource(colorRes);
}
public void setSeparatorColor(int colorRes){
Space separator = (Space) findViewById(R.id.bottom_separator_view);
separator.setBackgroundResource(colorRes);
}
public void showSkipButton(boolean showButton){
this.showSkip = showButton;
TextView skip = (TextView) findViewById(R.id.skip_button);
skip.setVisibility(showButton ? View.VISIBLE : View.INVISIBLE);
}
}
最佳答案
试试这个。
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
// Check if this is the page you want.
}
});
关于java - Appcompact 21.0.3 addOnPageChangeListener 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31097718/
我遇到了一个奇怪的问题。 当我使用 android holo 主题作为默认主题,然后在 webview 上选择文本时,上下文操作栏正确显示。 但是当我使用 app compact holo 主
我有一个问题。我的 Activity 有风格 @color/action_bar_background @color/action_bar_background @color
我最近通过 android sdk 更新到新的 android 5.0 并尝试使用 appcompact 添加 float 操作按钮 (FAB)。 我不想使用任何类型的外部库 如何使用 appcomp
如何在 appcompact7 alertdialog 中进行自定义验证?我的 alertdialog 中有一些输入,所以当我单击肯定按钮时,我想验证条件是否为真,如果条件返回 false 我只想显示
我正在使用 AppCompact 21.0.3 编写应用程序 如何修复此错误,但我在代码中遇到 addonpagechangelistener 错误? Faulty section:* pager.a
我刚刚在 eclipse 上启动了一个新的 android 项目。作为项目要求,我已将 appcompact-v7 支持库添加到我的 android 工作区中。 一旦 appcompat 导入完成,我
这个问题在这里已经有了答案: What's the enhancement of AppCompatActivity over ActionBarActivity? (6 个答案) 关闭 7 年前。
此问题已存在于此处。但我想一步一步地了解这一点。我把gradle中的依赖贴在dependencies下面。 compile 'com.android.support:appcompat-v7:25.3
我收到此错误 Error:Execution failed for task ':yourapp:packageAllDebugClassesForMultiDex'. > java.util.zip
如何使用 Google place API 获取 EditText 中的地点建议? 最佳答案 我建议您浏览 Google 的 get started guide第一的。然后将 Autocomplete
我正在尝试重新设计 Q-Municate,但我被抽屉导航重新设计任务困住了 我当前的抽屉导航看起来像这样 我想要我的抽屉导航按照这样的请求设计 关于此任务,我已经通过 StackOverFlow 给出
这个问题在这里已经有了答案: Failed to resolve: com.android.support:cardview-v7:26.0.0 android (26 个答案) 关闭 5 年前。
我是一名优秀的程序员,十分优秀!