Xrasher/android/src/su/xash/engine/XashTutorialActivity.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;
}
}