218 lines
5.9 KiB
Java
218 lines
5.9 KiB
Java
package su.xash.engine;
|
|
|
|
import android.animation.*;
|
|
import android.app.*;
|
|
import android.content.*;
|
|
import android.os.*;
|
|
import android.util.*;
|
|
import android.view.*;
|
|
import android.view.View.*;
|
|
import android.widget.*;
|
|
import android.widget.TableRow.*;
|
|
import su.xash.engine.*;
|
|
import java.util.*;
|
|
import su.xash.fwgslib.*;
|
|
|
|
import android.view.View.MeasureSpec;
|
|
|
|
public class XashTutorialActivity extends Activity implements View.OnClickListener
|
|
{
|
|
private Button next, prev;
|
|
private LinearLayout indicatorLayout;
|
|
private FrameLayout containerLayout;
|
|
private RelativeLayout buttonContainer;
|
|
|
|
private int currentItem;
|
|
|
|
private int prevText, nextText, finishText, cancelText, numPages;
|
|
|
|
PagedView scroll;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
if( FWGSLib.sdk >= 21 ) // material
|
|
setTheme(0x0103022e); // Theme_Material_NoActionBar
|
|
else
|
|
setTheme(0x01030006); // Theme_NoTitleBar
|
|
setContentView(R.layout.activity_tutorial);
|
|
initTexts();
|
|
initViews();
|
|
initPages();
|
|
changeFragment(0);
|
|
}
|
|
|
|
|
|
private void initTexts() {
|
|
prevText = R.string.prev;
|
|
cancelText = R.string.skip;
|
|
finishText = R.string.finish;
|
|
nextText = R.string.next;
|
|
}
|
|
|
|
private void initPages() {
|
|
LayoutInflater inflater;
|
|
|
|
inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
ViewGroup container = (ViewGroup)findViewById(R.id.container);
|
|
|
|
DisplayMetrics metrics = new DisplayMetrics();
|
|
getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
|
|
|
scroll = new PagedView(this,metrics.widthPixels);
|
|
container.addView(scroll);
|
|
|
|
while( true )
|
|
{
|
|
int titleres = getResources().getIdentifier("page_title" + String.valueOf(numPages), "string", getPackageName());
|
|
|
|
if( titleres == 0 )
|
|
break;
|
|
|
|
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.tutorial_step , null);
|
|
|
|
TextView title = (TextView) layout.findViewById(R.id.title);
|
|
TextView text = (TextView) layout.findViewById(R.id.content);
|
|
ImageView drawable = (ImageView) layout.findViewById(R.id.image);
|
|
|
|
int contentres = getResources().getIdentifier("page_content" + String.valueOf(numPages), "string", getPackageName());
|
|
int drawableres = getResources().getIdentifier("page" + String.valueOf(numPages), "drawable", getPackageName());
|
|
if( drawableres == 0)
|
|
drawableres = getResources().getIdentifier("page" + String.valueOf(numPages) + "_" + Locale.getDefault().getLanguage(), "drawable", getPackageName());
|
|
if( drawableres == 0 )
|
|
drawableres = getResources().getIdentifier("page" + String.valueOf(numPages) + "_en", "drawable", getPackageName());
|
|
|
|
title.setText(titleres);
|
|
text.setText(contentres);
|
|
if( FWGSLib.isLandscapeOrientation(this) )
|
|
drawable.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
|
drawable.setImageResource(drawableres);
|
|
scroll.addPage(layout);
|
|
numPages++;
|
|
}
|
|
scroll.setOnPageListener(new PagedView.OnPageListener(){
|
|
@Override
|
|
public void onPage(int page)
|
|
{
|
|
currentItem = page;
|
|
controlPosition();
|
|
}
|
|
});
|
|
if( FWGSLib.sdk < 14 ) // pre-ics does not apply buttons background
|
|
FWGSLib.changeButtonsStyle((ViewGroup)container.getParent());
|
|
}
|
|
|
|
private void controlPosition()
|
|
{
|
|
if( currentItem > numPages - 1 )
|
|
currentItem = numPages - 1;
|
|
|
|
notifyIndicator();
|
|
if (currentItem == numPages - 1) {
|
|
next.setText(finishText);
|
|
prev.setText(prevText);
|
|
} else if ( currentItem == 0) {
|
|
prev.setText(cancelText);
|
|
next.setText(nextText);
|
|
} else {
|
|
prev.setText(prevText);
|
|
next.setText(nextText);
|
|
}
|
|
}
|
|
|
|
private void initViews() {
|
|
currentItem = 0;
|
|
|
|
next = (Button) findViewById(R.id.next);
|
|
prev = (Button) findViewById(R.id.prev);
|
|
|
|
indicatorLayout = (LinearLayout) findViewById(R.id.indicatorLayout);
|
|
containerLayout = (FrameLayout) findViewById(R.id.containerLayout);
|
|
buttonContainer = (RelativeLayout) findViewById(R.id.buttonContainer);
|
|
|
|
next.setOnClickListener(this);
|
|
prev.setOnClickListener(this);
|
|
}
|
|
|
|
public void notifyIndicator() {
|
|
if (indicatorLayout.getChildCount() > 0)
|
|
indicatorLayout.removeAllViews();
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
ImageView imageView = new ImageView(this);
|
|
imageView.setPadding(8, 8, 8, 8);
|
|
int drawable = R.drawable.circle_black;
|
|
if (i == currentItem)
|
|
drawable = R.drawable.circle_white;
|
|
|
|
imageView.setImageResource(drawable);
|
|
|
|
final int finalI = i;
|
|
imageView.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
changeFragment(finalI);
|
|
}
|
|
});
|
|
|
|
indicatorLayout.addView(imageView);
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onBackPressed() {
|
|
if (currentItem == 0) {
|
|
finish();
|
|
} else {
|
|
changeFragment(false);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
if (v.getId() == R.id.next) {
|
|
if( currentItem == numPages - 1 )
|
|
{
|
|
finish();
|
|
return;
|
|
}
|
|
changeFragment(true);
|
|
} else if (v.getId() == R.id.prev) {
|
|
if( currentItem == 0 )
|
|
{
|
|
finish();
|
|
return;
|
|
}
|
|
changeFragment(false);
|
|
}
|
|
}
|
|
|
|
private void changeFragment(int position) {
|
|
scroll.changePage(position);
|
|
}
|
|
|
|
private void changeFragment(boolean isNext) {
|
|
if (isNext) {
|
|
scroll.changePage(currentItem+1);
|
|
} else {
|
|
scroll.changePage(currentItem-1);
|
|
}
|
|
}
|
|
|
|
public void setPrevText(int text) {
|
|
prevText = text;
|
|
}
|
|
|
|
public void setNextText(int text) {
|
|
nextText = text;
|
|
}
|
|
|
|
public void setFinishText(int text) {
|
|
finishText = text;
|
|
}
|
|
|
|
public void setCancelText(int text) {
|
|
cancelText = text;
|
|
}
|
|
}
|